我有:
问题是:
-XX:+UseParallelGC -Xmx12g -Xms6g -XX:ParallelGCThreads=23
而不是当我使用G1GC时(推荐):
-XX:+UseG1GC -Xmx12g -Xms6g -XX:ParallelGCThreads=23 -XX:ConcGCThreads=4
据我所见,响应时间和处理消息的数量是相似的(或几乎相同)。JConsole说ParallelGC在GC上花费的时间比G1GC多得多。
问题是:如何减少G1GC(?)关于GCP Kubernetes
也许这不是GC的问题--也许是别的什么--有什么贪婪吗?
在这里您可以看到来自JConsole的统计信息-左边的站点是ParallelGC,右边的是G1GC (注意CPU的使用-这是相同的应用程序-流量是相似的ParallelGC处理22k消息对18k消息的G1GC)。

发布于 2020-05-14 19:18:14
-XX:MaxGCPauseMillis是G1 GC的主要调优选项。目标GC暂停越大,总的GC开销就越低。默认的暂停时间目标是200 is。-XX:InitiatingHeapOccupancyPercent ( IHOP )和禁用自适应IHOP (-XX:-G1UseAdaptiveIHOP)可以减少G1 GC的运行频率,减少资源的使用。然而,这需要仔细选择-XX:InitiatingHeapOccupancyPercent值--这在很大程度上取决于特定的应用程序--通常是在40到80之间。发布于 2022-05-08 02:01:20
再加上阿潘的精彩回答:
你写的你的机器有12个核心,你有ParallelGCThreads=23。我假设这是因为您的处理器具有同步多线程(SMT)功能。考虑将ParallelGCThreads降低到12,甚至9,然后再进行测量。在垃圾收集中,内存访问模式可能会触发许多缓存错误,这意味着SMT中的每个物理内核的多个线程正在增加CPU利用率,实际上可能会损害您的总体性能,而不是提高它。
G1是针对需要在吞吐量和延迟之间保持平衡的情况而设计的。如果延迟不那么重要,或者如果ParallelGC碰巧提供了优越的延迟性能,那么您应该使用它而不是G1。
https://stackoverflow.com/questions/61797907
复制相似问题