java中的常量池jdk7和之前有什么变化

java中的常量池jdk7和之前有什么变化 有同学可以解释一下吗

2个回答

在jdk6中的常量池是放在 Perm 区中的,Perm 区和正常的 JAVA Heap 区域是完全分开的,而 new 出来的 String 对象是放在 JAVA Heap 区域。所以拿一个 JAVA Heap 区域的对象地址和字符串常量池的对象地址进行比较肯定是不相同的,即使调用String.intern方法也是没有任何关系的。
在jdk7中的字符串常量池已经从 Perm 区移到正常的 Java Heap 区域了,在jdk8中取消了Perm区,元空间取代了Perm区。当使用intern()时堆内存中存在对象内容是”某字符串”,但此时常量池中是没有 “某字符串”对象,常量池中不需要再存储一份对象了,可以直接存储堆中的引用。
————————————————
版权声明:本文为CSDN博主「嘿嘿嘿1212」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/at10090/article/details/94331707

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!