java jdk1.7运行时常量池内存不足抛异常的位置研究
2017-05-09 15:13
357 查看
在读到《深入理解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中
-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中
相关文章推荐
- jdk1.6 1.7 1.8 运行时常量池位置的变化
- jdk1.6 1.7 1.8 运行时常量池位置的变化
- Java 1.6 1.7 1.8 运行时常量池位置变化
- 运行的程序时,出现内存不足时的解决方式Exception in thread "main" java.lang.OutOfMemoryError: Java heap space(转)
- java内存分区 jdk1.7之前
- ROM,RAM,Android存储目录,Java代码中对内存的使用,ART的运行位置
- Java内存区域划分、内存分配原理(基于jdk1.7 源自 《深入理解java虚拟机》)
- xubuntu11.10下搭建java运行环境笔记(jdk1.7+mysql5+tomcat6.0.35+eclipse3.7)
- JVM笔记3-java内存区域之运行时常量池
- Java运行过程出现的内存不足问题
- day2 Java 运行时内存情况 JDK 的安装和配置
- Java基础之jdk1.8 JVM内存模型简述,含String常量池简单分析
- 讨论关于Java占用内存的研究
- ADF运行过程中java内存偏小
- 关于java内存不足异常的处理.
- Java占用内存的研究
- JDK的配置和在dos下运行java
- 栈和堆-java程序驻留在内存中的位置
- C/C++内存与运行时深入研究
- 关于Java占用内存的研究