首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用或不使用-XX:PermSize的-XX:MaxPermSize

使用或不使用-XX:PermSize的-XX:MaxPermSize
EN

Stack Overflow用户
提问于 2011-12-02 20:35:45
回答 3查看 297.2K关注 0票数 52

我们遇到了Java.lang.OutOfMemoryError: PermGen空间错误,在查看tomcat JVM参数时,除了-Xms-Xmx参数之外,我们还指定了-XX:MaxPermSize=128m。经过一些分析之后,我可以看到在PermGen空间上偶尔会发生垃圾收集,从而使其免于满负荷运行。

我的问题是:如果我也指定-XX:PermSize,除了增加-XX:MaxPermSize之外,还有什么不同?我知道总内存应该是Xmx+maxPermSize,但是当指定了-XX:MaxPermSize时,为什么-XX:PermSize应该是而不是,还有什么其他原因吗?

如果你有处理这些JVM参数的实际经验,请一定要分享。

ps。JVM是HotSpot 64位服务器VM版本16.2-b04

EN

回答 3

Stack Overflow用户

发布于 2011-12-02 20:44:09

JVM指定将在-XX:PermSize启动期间分配的初始大小。如有必要,JVM将分配给-XX:MaxPermSize

票数 47
EN

Stack Overflow用户

发布于 2011-12-02 22:59:21

通过使用-XX:PermSize-Xms等参数,您可以调优性能,例如,应用程序的启动。我最近没有看过它,但是几年前-Xms的默认值大约是32MB (我想),如果你的应用程序需要更多的内存,它会触发一系列的内存填充周期-完全垃圾收集-增加内存等等,直到它加载了它需要的一切。此周期可能不利于启动性能,因此立即分配所需的编号可以提高启动性能。

类似的循环也适用于永久生成。因此,调整这些参数可以改善启动(以及其他)。

警告当涉及到内存分配,划分eden空间和老一代时,JVM有很多优化和智能,所以不要做像-Xms等于-Xmx或者-XX:PermSize等于-XX:MaxPermSize这样的事情,因为这会删除一些JVM可以应用于其分配策略的优化,从而降低你的应用程序的性能,而不是提高它。

一如既往:进行重要的测量以证明您的更改确实提高了整体性能(例如,在使用应用程序期间,改善启动时间可能会对性能造成灾难性的影响)

票数 26
EN

Stack Overflow用户

发布于 2011-12-03 00:15:40

如果您正在进行一些性能调优,通常建议将-XX:PermSize-XX:MaxPermSize设置为相同的值,以提高JVM效率。

以下是一些信息:

  1. Support for large page heap on x86 and amd64 platforms
  2. Java Support for Large Memory Pages
  3. Setting the Permanent Generation Size

如果使用的是CMS GC,还可以指定-XX:+CMSClassUnloadingEnabled以启用类卸载选项。这可能有助于降低Java.lang.OutOfMemoryError: PermGen space的概率。

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

https://stackoverflow.com/questions/8356416

复制
相关文章

相似问题

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