校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > jvm内存结构
题目

运行时常量池溢出的原因?

解答

String 的 intern 方法是一个本地方法,作用是如果字符串常量池中已包含一个等于此 String 对象的字符串,则返回池中这个字符串的 String 对象的引用,否则将此 String 对象包含的字符串添加到常量池并返回此 String 对象的引用。

在 JDK6 及之前常量池分配在永久代,因此可以通过 -XX:PermSize 和 -XX:MaxPermSize 限制永久代大小,间接限制常量池。
在 while 死循环中调用 intern 方法导致运行时常量池溢出。在 JDK7 后不会出现该问题,因为存放在永久代的字符串常量池已经被移至堆中。

C 3条回复 评论
Bury

太好了,明了易懂,感谢

发表于 2024-08-14 21:00:00
0 0
墨色槐

太给力了 醍醐灌顶

发表于 2021-09-11 14:55:00
0 0
米线还有吗

这篇文章写得不错 !

发表于 2021-09-10 11:05:00
0 0