Java堆调整中的NewRatio的最小值
我有一个过程,在旧的gen空间中我只消耗很少的内存。由于这个原因,很多内存都被浪费了。我试图使用NewRatio参数来调整旧的gen space,但是我无法将它降低到1以下。即使设置为1之后,旧gen区域中仍有很多空间没有被使用。Java堆调整中的NewRatio的最小值
是否有任何方式/配置来减少旧gen空间的大小,而不减少年轻gen的大小?
谢谢, 尼丁哥斯瓦米
可以控制堆大小与以下JVM参数:
-Xmsvalue
-Xmxvalue
-XX:MinHeapFreeRatio =最小
-XX:MaxHeapFreeRatio =最大值
-XX:NewRatio =比
-XX:新尺寸=尺寸
-XX:MaxNewSize =大小
-XX:+ AggressiveHeap
的-Xms和-Xmx参数定义最小和最大堆大小,分别。由于GC在各代填满时发生,吞吐量与可用内存量成反比。默认情况下,JVM会在每个GC上增大或缩小堆,以尝试将特定范围内每个集合中的活动对象的可用空间比例保留。该范围由参数-XX:MinHeapFreeRatio = minimum和-XX:MaxHeapFreeRatio = maximum设置为百分比;和由-Xms和-Xmx限定的总大小。
为固定堆大小设置-Xms和-Xmx的值彼此相等。当堆增长或缩小时,JVM必须重新计算旧的和新一代的大小以维护预定义的NewRatio。
NewSize和MaxNewSize参数控制新一代的最小和最大尺寸。通过设置这些参数来调节新一代的尺寸。年轻一代越大,次要收集越少。年轻一代相对于老一代的规模由NewRatio控制。例如,设置-XX:NewRatio = 3意味着旧世代和年轻世代之间的比例为1:3,伊甸园和幸存者空间的总大小将是堆的四分之一。
默认情况下,应用程序服务器与Java HotSpot Server JVM一起调用。服务器JVM的默认NewRatio为2:旧一代占用堆的2/3,而新一代占1/3。较大的新一代可以容纳更多短寿命物体,从而减少对主要收集缓慢的需求。旧一代仍然足够大,可以容纳许多长寿命的物体。
大小Java堆:
决定你能负担得起的JVM的内存总量。因此,将您自己的绩效指标与年轻一代的规模进行比较,以找到最佳设置。
为年轻一代提供充足的记忆。默认值是根据NewRatio和-Xmx设置计算得出的。
较大的伊甸园或年轻一代的空间增加了完整的GC之间的间距。但年轻的太空收藏可能需要较长的时间。通常,将eden大小保持在最大堆大小的四分之一和三分之一之间。老一代必须比新一代更大。