首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >永久一代:默认值的容量是固定的还是会根据需要增长?

永久一代:默认值的容量是固定的还是会根据需要增长?
EN

Stack Overflow用户
提问于 2011-03-25 13:24:45
回答 6查看 1.8K关注 0票数 0

我们注意到,我们的客户运行Solaris 10的永久GC从50%增长到97%的容量。这个JVM使用的是默认值" Permgen“(我们没有向JVM传递任何自定义Permgen标志)。

与其在生产中运行97%的permgen空间,不如设置一个更高的PermGen值吗?

P.S :我们在solaris 10上使用JDK 1.6.0_23。

UPDATE我们应该认为它很快就可以做OutOfMemoryError了吗?或者JVM是否有可能增加容量,从而使使用率降到97%以下?

EN

回答 6

Stack Overflow用户

发布于 2011-03-25 13:30:19

PermGen将增长到预定的最大值(您可以从命令行设置这个最大值),然后停止。PermGen区域主要保存类定义,通常在加载大量类而不发布类的应用程序中耗尽PermGen --要么是因为它们很大,要么是因为在web应用程序中,在类加载器发布后,有东西意外地抓住了一个类。您需要确定PermGen是否持续增长,还是最终稳定下来。

票数 2
EN

Stack Overflow用户

发布于 2011-03-25 13:33:22

PermGen空间在应用程序代码或正在使用的库中使用随着时间的推移,可能会出现某些内存泄漏/错误。

例如,在Apache中运行webapp时经常会出现问题,如果webapp实例被重新加载太多次,则使用Spring和log4j,显然log4j存在一些问题,它不能正确地从类加载器卸载某些类。

因此,确实有可能出现导致PermGen空间随时间增长的泄漏,就像正常的内存泄漏一样。

票数 2
EN

Stack Overflow用户

发布于 2011-03-25 13:29:33

你的推理有点不清楚。

如果您预期会失败,为什么不立即采取防御性方法并增加-XX:MaxPermSize呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5433052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档