2

出于性能原因,我正在使用一个使用 String.intern() 的外部库。很好,但是我在给定的运行中经常调用那个库,所以我遇到了可怕的

java.lang.OutOfMemoryError: PermGen 空间

显然我可以使用 JVM 命令行-XX:MaxPermSize修饰符,但该解决方案的可扩展性不是很高。相反,有没有办法定期(在两个“批次”库调用之间)“刷新”实习字符串池,即清空 String 类持有的字符串静态表?

4

2 回答 2

3

不,只要适当调整 permgen 的大小即可。必须适当地调整堆大小没有什么不同。不要害怕!

于 2011-01-15T09:18:42.233 回答
3

进一步调查,我发现了这篇文章,它似乎证明了实习字符串仍然是垃圾收集的。我想这意味着我的问题是一个更深层次的问题——我使用的库必须仍然对这些字符串保持有效的引用:(

于 2011-01-15T09:32:00.830 回答