要求写代码溢出 堆、栈、方法区
设置对应的参数后:
堆:
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<OOheap> l = new ArrayList<OOheap>();
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());
}
}
}