您的位置:首页 > 编程语言 > Java开发

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中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: