Full GC with unknown reason

Our production server is using the following Java GC related options.

Java HotSpot(TM) 64-Bit Server VM (24.161-b32) for linux-amd64 JRE (1.7.0_161-b32), built on Nov 27 2017 14:22:33 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8) Memory: 4k page, physical 82393740k(76145108k free), swap 4194300k(4194300k free) CommandLine flags: -XX:GCLogFileSize=10485760 -XX:InitialHeapSize=42949672960 -XX:+ManagementServer -XX:MaxHeapSize=42949672960 -XX:MaxPermSize=2147483648 -XX:MinTLABSize=393216 -XX:NewRatio=4 -XX:NewSize=2097152 -XX:NumberOfGCLogFiles=5 -XX:PermSize=1073741824 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:+UseParallelGC

We noticed in our system, full GC is usually triggered by Oldgen nearly full.

2018-07-10T12:22:41.499+0800: 54157.390: [Full GC [PSYoungGen: 171087K->0K(8082432K)] [ParOldGen: 33386149K->23642277K(33554432K)] 33557236K->23642277K(41636864K) [PSPermGen: 467624K->467575K(1048576K)], 11.2703410 secs] [Times: user=96.96 sys=0.01, real=11.27 secs]

But we also found some cases where the oldgen is not full and there is still Full GC, which may occurs several times within a short period.

Example 1:

2018-07-10T11:27:08.835+0800: 50824.726: [Full GC [PSYoungGen: 58529K->0K(8164352K)] [ParOldGen: 25104602K->18167574K(33554432K)] 25163131K->18167574K(41718784K) [PSPermGen: 463156K->463127K(1048576K)], 10.5645250 secs] [Times: user=92.59 sys=0.01, real=10.57 secs]

2018-07-10T11:27:20.187+0800: 50836.078: [GC [PSYoungGen: 2453105K->49277K(8178176K)] 20620680K->18216851K(41732608K), 0.0549990 secs] [Times: user=0.42 sys=0.00, real=0.05 secs]

2018-07-10T11:27:20.242+0800: 50836.133: [Full GC [PSYoungGen: 49277K->0K(8178176K)] [ParOldGen: 18167574K->17574673K(33554432K)] 18216851K->17574673K(41732608K) [PSPermGen: 463139K->463138K(1048576K)], 7.0284530 secs] [Times: user=65.78 sys=0.05, real=7.03 secs]

Example 2:

2018-07-10T10:47:00.246+0800: 46015.882: [Full GC [PSYoungGen: 65545K->0K(8188928K)] [ParOldGen: 30134841K->15568683K(33554432K)] 30200386K->15568683K(41743360K) [PSPermGen: 450252K->445109K(1048576K)], 13.7031150 secs] [Times: user=111.85 sys=0.19, real=13.70 secs]

2018-07-10T10:47:14.815+0800: 46030.450: [GC [PSYoungGen: 1234480K->66862K(8208384K)] 16803163K->15635545K(41762816K), 0.0545140 secs] [Times: user=0.43 sys=0.01, real=0.06 secs]

2018-07-10T10:47:14.869+0800: 46030.505: [Full GC [PSYoungGen: 66862K->0K(8208384K)] [ParOldGen: 15568683K->13855502K(33554432K)] 15635545K->13855502K(41762816K) [PSPermGen: 445113K->445112K(1048576K)], 5.9137430 secs] [Times: user=54.73 sys=0.00, real=5.91 secs]

2018-07-10T10:47:21.371+0800: 46037.007: [GC [PSYoungGen: 841570K->66802K(8203264K)] 14697072K->13922304K(41757696K), 0.0527600 secs] [Times: user=0.41 sys=0.00, real=0.05 secs]

2018-07-10T10:47:21.424+0800: 46037.060: [Full GC [PSYoungGen: 66802K->0K(8203264K)] [ParOldGen: 13855502K->13890660K(33554432K)] 13922304K->13890660K(41757696K) [PSPermGen: 445125K->445125K(1048576K)], 5.2962010 secs] [Times: user=49.58 sys=0.07, real=5.30 secs]

Anyone has hints on why the Full GC still occurs when there is a lot of free space in the OLDgen ?

Thank you.