首页 > 解决方案 > 内存管理和 Java 堆

问题描述

-Xmx在 Java 中,您可以通过向JVM提供参数来设置最大应用程序堆大小。假设它是1GB。我认为从您启动应用程序时就给您 1GB,以便应用程序可以在该区域创建对象。但后来我读到了自适应尺寸技术:

当 JVM 尝试根据其策略和调整找到最佳性能时,、代和幸存者空间的大小可能会在执行过程中发生变化。

现在,我迷路了。我不知道 JVM 默认会调整堆大小。您能否解释一下(或提供可能涵盖它的有用资源的链接)JVM 在执行期间如何调整堆大小?

标签: javamemoryjvmheap-memory

解决方案


您设置的是允许分配 JVM的最大堆大小。它通常从较小的大小开始并且仅根据需要增长(即使在垃圾收集之后仅重新使用现有内存也不够用),最近的 JVM 版本还通过在看起来合适的时候缩小堆来给操作系统回馈空间(例如,在工作时间的一段重负荷结束后)。


推荐阅读