【问题标题】:Difference between Xms and Xmx and XX:MaxPermSizeXms 与 Xmx 和 XX 的区别:MaxPermSize
【发布时间】:2016-11-14 18:31:45
【问题描述】:

有什么区别

-Xms4096m
-Xmx2048M 
-XX:MaxPermSize=712M

我对这两个-Xmx2048M-XX:MaxPermSize=712M 感到困惑

如果我使用 -Xmx2048M 或 -Xmx2048m 会发生

【问题讨论】:

    标签: tomcat garbage-collection


    【解决方案1】:

    Java 对象位于称为 的区域中,而诸如类对象和方法对象之类的元数据位于 永久代 或 Perm Gen 区域。永久代不是堆的一部分。

    堆是在 JVM 启动时创建的,并且在应用程序运行时可能会增加或减少大小。当堆满时,垃圾会被收集。在垃圾回收期间,不再使用的对象被清除,从而为新对象腾出空间。

    -Xmssize指定初始堆大小。

    -Xmxsize指定最大堆大小。

    -XX:MaxPermSize=size 设置最大永久代空间大小。此选项在 JDK 8 中已弃用,并被 -XX:MaxMetaspaceSize 选项取代。

    大小以字节表示。附加字母kK 表示千字节,mM 表示兆字节,gG 表示千兆字节。

    参考资料:

    How is the java memory pool divided?

    What is perm space?

    Java (JVM) Memory Model – Memory Management in Java

    Java 7 SE Command Line Options

    Java 7 HotSpot VM Options

    【讨论】:

    • 谢谢,但是如果我增加这个 -XX:MaxPermSize=8192m 的大小会发生什么。因为我面临性能问题,申请过程变慢了
    • 如果您有性能问题,您需要诊断它们并找出原因。 8192m 是 perm gen 空间过多。通常你只需要在遇到java.lang.OutOfMemoryError: PermGen space 错误时增加 perm gen。如果垃圾收集经常触发,您可能需要使用-xmx 增加堆内存,但请注意,可用于 OS 磁盘缓存的内存将减少。看看rimuhosting.com/knowledgebase/linux/java/-Xmx-settingsTuning Tomcat Performance For Optimum Speed
    • 嗨@JRL,感谢这个简短而清晰的解释!我和我的团队有一个最后一个问题,也许你能帮助我们:这两个内存量加起来吗?假设我允许 2048M 给我在 Kubernetes 上管理的 Java 应用程序,而这个设置的 -Xmx 为 2048M,-XX:MaxPermSize 为 384M。我的应用程序允许 2560M 内存更好吗?还是2048M就可以了?
    • @lboix 这两个区域是独立的,它们的内存加起来,所以如果都达到最大值,你至少需要2432M。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多