【问题标题】:How does JVM decide to extend memory or do a GC?JVM 如何决定扩展内存或进行 GC?
【发布时间】:2013-08-15 14:44:45
【问题描述】:

我使用的 JBoss 实例的起始内存为 4 GB,最大内存为 12 GB。我的问题是 - JVM 如何决定何时扩展内存(从 4GB 以上)与何时强制进行完整的 GC?我问的原因是因为我正在查看 JVM 的内存配置文件,在一个实例中,我注意到它将内存上限从 4GB 增加到更高的值以适应内存增长需求,而在另一种情况下,它决定执行完整的 GC 以降低已用内存​​。对此有什么了解吗?

【问题讨论】:

  • 向操作系统请求更多内存是一项相对昂贵的操作。我相信只有在完整的 gc 没有为给定操作提供足够的内存之后才会发生这种情况。

标签: java memory-management garbage-collection


【解决方案1】:

您没有说您使用的是什么 JVM,但据我所知,它们都会增加堆以容纳更多对象。很可能是其他原因导致了完整的 gc。 如果你有 12 GB 可用(如果你允许 JVM 增长,你应该这样做),那么我也建议设置 Xms=12GB。这使您可以更轻松地了解您想要拥有的生成大小,而无需处理堆大小调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 2017-02-17
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    相关资源
    最近更新 更多