【发布时间】:2020-01-18 18:56:07
【问题描述】:
我正在努力寻找生产 JVM 上的“Full GC”。每天午夜左右,STW 会毫无缘由地发生,持续 10-11 秒非常致命。这是 gc 日志:
Java HotSpot(TM) 64-Bit Server VM (25.131-b11) for windows-amd64 JRE (1.8.0_131-b11), built on Mar 15 2017 01:23:53 by "java_re" with MS VC++ 10.0 (VS2010)
Memory: 4k page, physical 16584284k(13074876k free), swap 23137624k(18439472k free)
CommandLine flags: -XX:GCLogFileSize=1024000 -XX:InitialHeapSize=11811160064 -XX:+ManagementServer -XX:MaxHeapSize=11811160064 -XX:NumberOfGCLogFiles=10 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
...
2020-01-17T00:00:04.411+0200: 113734.053: [GC (Heap Inspection Initiated GC) [PSYoungGen: 522474K->146371K(3387904K)] 6946079K->6573263K(11077632K), 0.1786961 secs] [Times: user=0.67 sys=0.02, real=0.18 secs]
2020-01-17T00:00:04.592+0200: 113734.233: [Full GC (Heap Inspection Initiated GC) [PSYoungGen: 146371K->0K(3387904K)] [ParOldGen: 6426892K->3217828K(7689728K)] 6573263K->3217828K(11077632K), [Metaspace: 81937K->81809K(1126400K)], 11.4447857 secs] [Times: user=44.06 sys=0.20, real=11.44 secs]
“Heap Inspection Initiated GC”究竟是什么意思?谁发起了这项检查,为什么?除了它是由我们不使用的一些工具(如 jmap、jmc..)引起的之外,我没有找到任何有意义的信息。
高度赞赏任何提示或方向。
【问题讨论】:
-
不要误会我的意思,但您使用的是
ParallelGC并想知道为什么您会得到一个大的 STW?只是想知道...... -
是的,这是 ParallelGC。问题实际上是 - “Heap Inspection Initiated GC”原因实际上意味着什么。显然原因不是缺少堆,需要清理。此 VM 中有大量堆。
-
您必须用
@标记我,我才能知道您已回复。你有可能是这样做的代理人吗?可能是this被触发了? -
@Eugene - 好的,这敲响了警钟。我们使用this 进行监控。我要检查一下。如果我理解正确,这个 GC 可能是由外部进程引起的,而不是由它本身引起的?这就是这个原因的意思吗?
-
完全正确。据我所知,有很多地方可以触发:代理、jmap、jfr、
SIGBREAK
标签: java garbage-collection jvm