gpt4 book ai didi

java - 高对象复制时间导致 G1GC 长时间垃圾收集暂停

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:02 24 4
gpt4 key购买 nike

我有一个在独立 JVM 中运行的 Java 应用程序。该应用程序监听一个或多个套接字上的数据,对数据进行排队,并安排线程将数据从队列中拉出并保存。数据很宽,每条记录超过 700 个数据元素,尽管所有数据元素都是小字符串、整数或长整型。

应用程序在一段时间内平稳运行,有时是 30 分钟到一个小时,但随后我们会遇到一次或多次长时间的垃圾收集暂停。大部分暂停时间都花在对象复制时间上。相对于其他集合,系统时间也很高。

这是 JVM 的详细信息:

java version "1.7.0_03" 
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

以下是 JVM 选项:

-XX:MaxPermSize=256m -XX:PermSize=256m -Xms3G -Xmx3G -XX:+UseG1GC -XX:-UseGCOverheadLimit 

该进程的任务集为 4 个核心(都在同一个插槽上),但几乎没有使用其中的 2 个。此框上的所有进程都固定到它们自己的核心(0 ansd 1 未使用)。该机器有足够的空闲内存(20+G),顶部显示了使用 2.5G RES 内存的过程。

这是一些 gc 日志输出...

[Object Copy (ms): 2090.4 2224.0 2484.0 2160.1 1603.9 2071.2 887.8 1608.1 1992.0 2030.5 1692.5 1583.9 2140.3 1703.0 2174.0 1949.5 1941.1 2190.1 2153.3 1604.1 1930.8 1892.6 1651.9

[Eden: 1017M(1017M)->0B(1016M) Survivors: 7168K->8192K Heap: 1062M(3072M)->47M(3072M)]

[Times: user=2.24 sys=7.22, real=2.49 secs]

关于对象复制时间和系统时间为何如此之高以及如何纠正它的任何想法?日志中有大量垃圾回收,其 Eden/Survivors/Heap 大小几乎相同,只需要 10 或 20 毫秒。

最佳答案

3gb 不是一个大堆,survivor 大小也很小。这些核心上还有其他运行吗?您产生了多少垃圾,多久收集一次?您可能也想在没有 G1GC 的情况下尝试一下。

关于java - 高对象复制时间导致 G1GC 长时间垃圾收集暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19983332/

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