gpt4 book ai didi

java - 在什么情况下 JVM 会决定增加堆的大小?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:51 24 4
gpt4 key购买 nike

JVM 应用程序在 Oracle Hotspot JVM 上运行,它以默认 JVM 设置启动,但初始堆大小为 100MB,最大堆大小为 1GB。

在什么情况下 JVM 会决定增加当前堆大小,而不是尝试 GC?

最佳答案

HotSpot JVM 持续监控分配率和对象生命周期。它试图实现两个关键因素:

  1. 让短命的对象死在伊甸园里
  2. 促进长期存在的对象按时堆放,以防止在幸存者空间之间进行不必要的复制

简而言之,您可以将其描述为 HotSpot 有一些配置的阈值,该阈值指示在运行垃圾收集器后必须释放的总分配堆的百分比。例如,如果此阈值配置为 70%,并且在运行完整 GC 堆使用率后将为 80%,则将分配额外的内存来达到阈值。当然,更大的堆意味着更长的暂停时间,而更小的堆意味着更频繁的收集。

但是你必须记住 JVM 非常复杂,你可以改变这种行为,例如通过使用标志:

  • AdaptiveSizePausePolicy,它将选择堆大小以实现最短暂停
  • AdaptiveSizeThroughPutPolicy,它将选择堆大小以实现最高吞吐量
  • GCTimeLimitGCTimeRatio,设置应用程序执行所花费的时间

关于java - 在什么情况下 JVM 会决定增加堆的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21163932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com