Jav*_*low 8 java garbage-collection jvm
我有一个高容量的Java应用程序,可以处理50000msgs /秒的一致负载.它使用以下设置调整为高吞吐量:
-Xmx3g -Xms3g -XX:NewSize = 2g -Xss128k -XX:SurvivorRatio = 6 -XX:TargetSurvivorRatio = 90 -XX:+ UseParallelGC -XX:ParallelGCThreads = 12 -XX:+ UseParallelOldGC -XX:+ HeapDumpOnOutOfMemoryError
我发现尽管GC运行的频率保持不变,年轻的GC时间从一天结束时的50毫秒开始稳定上升到200毫秒.
如果我使用ParNewGC收集器尝试相同的运行,GC时间会以更快的速度上升.有没有人对这个问题有任何想法?
如果存在内存泄漏,或者内存中的缓存逐渐使用越来越多的内存,这些都会导致 GC 执行更多的工作来跟踪可到达的对象。
其他可能性是:
您有非堆内存泄漏,这会导致分页增加;即,将物理内存页面复制到光盘并复制回来。
某些外部进程消耗的内存量不断增加,导致分页次数增加。
年轻代中生成的对象的性质随着时间的推移而变化,因此需要更多的工作来跟踪可到达的对象。可能只是因为第一批藏品中大部分幸存下来。
| 归档时间: |
|
| 查看次数: |
5467 次 |
| 最近记录: |