Java 针对少量和长期GC运行的JVM调优
我的服务器应用程序生成了许多死气沉沉的对象,因此我假设eden和survivor空间很快就被填满了,这会导致频繁的GC运行。Java 针对少量和长期GC运行的JVM调优,java,performance,garbage-collection,jvm,Java,Performance,Garbage Collection,Jvm,我的服务器应用程序生成了许多死气沉沉的对象,因此我假设eden和survivor空间很快就被填满了,这会导致频繁的GC运行。 我的目标是进行几次/长距离跑步,比如说每天一次,即使需要几秒钟。 您将如何为此目标优化JVM? 我应该使用哪个GC?(到G1) 可用堆空间约为4Gb(-Xmx4G)在您的情况下,它会触发频繁的小型gc。您应该使用“-XX:NewRatio=ratio” 这将决定老一代和年轻一代的比例 例如-XX:NewRatio=3意味着老一代和年轻一代之间的比率为1:3,eden和幸存
我的目标是进行几次/长距离跑步,比如说每天一次,即使需要几秒钟。
您将如何为此目标优化JVM?
我应该使用哪个GC?(到G1)
可用堆空间约为4Gb(-Xmx4G)在您的情况下,它会触发频繁的小型gc。您应该使用
“-XX:NewRatio=ratio”
这将决定老一代和年轻一代的比例
例如-XX:NewRatio=3意味着老一代和年轻一代之间的比率为1:3,eden和幸存者空间的组合大小将是堆的四分之一
此外,您还可以通过使用NewSize和MaxNewSize微调Eden和Survivor空间。这些参数控制新一代的最小和最大大小
默认情况下,NewRation=2,这意味着老一代和年轻一代之间的比率为1:2
您可以阅读更多详细信息在您的案例中,它会触发频繁的次要gc。您应该使用
“-XX:NewRatio=ratio”
这将决定老一代和年轻一代的比例
例如-XX:NewRatio=3意味着老一代和年轻一代之间的比率为1:3,eden和幸存者空间的组合大小将是堆的四分之一
此外,您还可以通过使用NewSize和MaxNewSize微调Eden和Survivor空间。这些参数控制新一代的最小和最大大小
默认情况下,NewRation=2,这意味着老一代和年轻一代之间的比率为1:2
您可以阅读更多详细信息您是在谈论年轻一代还是老一代的收藏?另外,GC后记录并指出哪些部分在你认为可以容忍的范围之外。@ 847我说的是频繁的年轻一代的收藏。减少长时间运行“完全GC”的唯一方法是不要让记忆累积起来。更频繁地运行gc将使堆保持较小。您应该调整的是“世界暂停”事件(完整gc)。如果你的应用程序正在创建大量新对象,那么你应该使用parallelGC。你是在谈论年轻人还是老一代人的集合?另外,GC后记录并指出哪些部分在你认为可以容忍的范围之外。@ 847我说的是频繁的年轻一代的收藏。减少长时间运行“完全GC”的唯一方法是不要让记忆累积起来。更频繁地运行gc将使堆保持较小。您应该调整的是“世界暂停”事件(完整gc)。如果你的应用程序正在创建大量新对象,那么你应该使用parallelGC。