import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.sun.org.apache.bcel.internal.util.ClassLoader;
public class OutOfMemoryTest {
/**
* @param args
* 在JDK1.6下,模仿堆、栈、永久代溢出
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// heapTest();
// permGenTest();
stackTest();
}
//堆溢出,堆存放对象实例
public static void heapTest(){
List list = new ArrayList();
int i=0;
while(true){
list.add(i++);
}
}
//永久代溢出,JDK8已经溢出永久代。永久代存放class,常量池等
public static void permGenTest(){
String str = "s";
while(true){
str = str+str;
str.intern(); //在常量池中查找是否有该字符串,有就返回引用,没有的话加入常量池,返回引用
}
}
//栈溢出,栈存放方法中局部变量和对象引用。
public static void stackTest(){
int value = 0;
value++;
stackTest(); //无限递归,局部变量无限增加
}
}