JVM应用程序在Oracle Hotspot JVM上运行,使用默认的JVM设置启动,但初始堆大小为100MB,最大堆大小为1GB。
在哪种情况下,JVM将决定增加当前的堆大小,而不是尝试使用GC?
HotSpot JVM持续监视分配率和对象生存期。它试图实现两个关键因素:
简而言之,您可以将其描述为HotSpot具有一些已配置的阈值,该阈值指示运行垃圾收集器之后必须释放多少总分配堆。例如,如果将此阈值配置为70%,并且在运行满的GC堆使用率之后将为80%,则将分配更多内存以达到阈值。当然,较大的堆意味着更长的暂停,而较小的堆意味着更频繁的收集。
但是您必须记住,JVM非常复杂,您可以更改此行为,例如通过使用标志:
AdaptiveSizePausePolicy
,它将选择堆大小以实现最短的暂停AdaptiveSizeThroughPutPolicy
,它将选择堆大小以实现最高吞吐量GCTimeLimit
和GCTimeRatio
,它设置了应用程序执行所花费的时间本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句