在读到《深入理解java虚拟机》这本书的关于运行时常量池溢出问题时,自己也写了同样的方法,如下:
-verbose:gc -Xmx20M -Xms20M -XX:MaxNewSize=10M
-XX:-UseGCOverheadLimit 设置大小
public class RuntimeConstantPoolTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Thread.sleep(10000);//为了我能有时间打开java visualVM工具来监控gc回收的情况
List<String> list = new ArrayList<String>();
int i=0;
System.out.println("这个intern()方法可不是好弄的");
while(true){
list.add(String.valueOf(i++).intern());
}
} catch (Throwable e) {
System.out.println("这个就能抓住:"+e);
}
}
}
下图的eden和old都被塞满了,所以报java heap space,这也说明jdk1.7的运行时常量池放在了heap中