JVM内存溢出面试题

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

要求写代码溢出 堆、栈、方法区

设置对应的参数后:

堆:


package kan;
/**
 * VM Args : -Xms1m -Xmx1m
 */

import java.util.ArrayList;
import java.util.List;

public class Overheap {

	static class OOheap {

	}

	public static void main(String[] args) {

		List l = new ArrayList();
		while (true) {
			l.add(new OOheap());
		}
	}
}

栈:

/**
 * VM Args : -Xss100k
 * 
 * 
 */
public class OverStack {

	public void leakStack() {
		leakStack();
	}

	public static void main(String[] args) {
		OverStack o = new OverStack();
		try {
			o.leakStack();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}




方法区:(这个比较麻烦,偷懒溢出常量池吧。。。)

/**
 * VM Args: -XX:PremSize=100k -XX:MaxPremSize=100k
 */
import java.util.ArrayList;
import java.util.List;

public class OverPremGen {

	public static void main(String[] args) {

		List l = new ArrayList();
		int i = 0;
		while(true){
			
			l.add(String.valueOf(i++).intern());
		}
	}
}






转载于:https://my.oschina.net/kanlianhui/blog/223347

你可能感兴趣的:(JVM内存溢出面试题)