JVM 常量池

Posted kakaisgood

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM 常量池相关的知识,希望对你有一定的参考价值。

最近正好在研究这个问题,题主问题本身是有问题的,在JDK7中HotSpot的常量池是放在Java Heap中,并非题目中的native memory中。在JDK6中是放在Perm Space。题主可以用JDK6和JDK7分别试一下。
说一下题主的那段代码,要一分为二,JDK6/JDK7及以上
JDK6:
上面也说了,JDK6的字符串常量是存在Perm Space中,所以把Perm Space 设的小一点-(XX:MaxPermSize=10M)可以很快抛异常,具体的异常就是“java.lang.OutOfMemoryError: PermGen space”。
JDK7及以上:
JDK7的字符串常量池是放在Java Heap区,所以只要设置“-Xms64m -Xmx64m”就很快会抛异常,异常肯定是“java.lang.OutOfMemoryError: Java heap space


作者:百恼
链接:https://www.zhihu.com/question/29352626/answer/67242227
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。










以上是关于JVM 常量池的主要内容,如果未能解决你的问题,请参考以下文章

Jvm(35.1),class文件结构----常量池(上)

八:JVM调优实战及常量池详解

JVM中的常量池详解

Jvm(35),class文件结构----常量池

jvm_string常量池

JVM—常量池以及拼接操作详解