gpt4 book ai didi

java - 为高响应服务器应用程序调整 JVM (GC)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:12 24 4
gpt4 key购买 nike

我在 Linux 64 位上运行一个应用服务器,它有 8 个核心 CPU 和 6 GB 内存。

服务器必须高度响应。

经过一些检查,我发现服务器上运行的应用程序创建了相当大量的短生命对象,只有大约 200~400 MB 的长生命对象(只要没有内存泄漏)

看完http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html我使用这些 JVM 选项

-server -Xms2g -Xmx2g -XX:MaxPermSize=256m -XX:NewRatio=1 -XX:+UseConcMarkSweepGC

结果:minor GC耗时0.01~0.02秒,major GC耗时1~3秒次要 GC 不断发生。

如何进一步改进或调整 JVM?

更大的堆大小?但是 GC 会花费更多时间吗?

更大的 NewSize 和 MaxNewSize(对于年轻一代)?

其他 Collection 家?并行GC?

让主要 GC 更频繁地发生是个好主意吗?以及如何?

最佳答案

Result: the minor GC takes 0.01 ~ 0.02 sec, the major GC takes 1 ~ 3 sec the minor GC happens constantly.

除非您报告暂停,否则我会说 CMS 收集器正在执行您要求它执行的操作。根据定义,CMS 将使用比串行和并行收集器更大百分比的 CPU。这是您为低停顿时间付出的代价。

如果您看到 1 到 3 秒的暂停 时间,我认为您需要进行一些调整。我不是专家,但看起来您应该从默认值 92 开始减少 CMSInitiatingOccupancyFraction 的值。

增加堆大小将提高 GC 的“吞吐量”。但是,如果您的问题是长时间停顿,增加堆大小可能会使问题变得更糟。

关于java - 为高响应服务器应用程序调整 JVM (GC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2743106/

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