我听到一些人声称您无法扩大JVM堆大小。我听说过实际限制为4 GB(我曾听过IBM顾问这样说),10 GB,32 GB,依此类推...我简直不敢相信任何这些数字,并且一直在想这个问题现在有一阵子。

因此,我有三个问题,希望有经验的人可以回答:

  • 在以下情况下,您将如何调整堆和GC设置?
  • 最终用户是否会注意到明显的问题(JVM的暂停等)?
  • 这真的应该仍然有效吗?我认为应该。

  • 案子:
  • 64位平台
  • 64核
  • 64 GB的内存
  • 应用程序服务器面向客户端(即Jboss/tomcat Web应用程序服务器)-JVM的完全暂停可能会由最终用户
  • 注意到。
  • Sun JVM,可能是1.5

  • 为了证明我不是要你们做我的作业,这是我想到的:
  • -XX:+UseConcMarkSweepGC -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:-EliminateZeroing -Xmn768m -Xmx55000m
  • CMS应该减少暂停的次数,尽管它会带来开销。 CMS的其他设置似乎自动默认为CPU数量,因此对我来说似乎很理智。我添加的其余部分通常可能会对性能产生好坏,因此应该对其进行测试。
  • 肯定地。
  • 最佳答案

    我认为,如果不进一步了解您的应用程序,除了一般性建议外,任何人都很难给您提供任何帮助。

    我的建议是,您使用VisualGC(或VisualVM的VisualGC插件)实际看看,了解应用程序运行时垃圾回收的作用。一旦您对GC如何与您的应用程序一起工作有了更深入的了解,调整它就会容易得多。

    关于java - Sun JVM是否可以毫无问题地处理巨大的堆大小?如何解决?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1696028/

    10-14 18:53