Java 8 adding -XX:MaxNewSize to parameters

Shawn Heisey java at elyograg.org
Fri Nov 2 22:35:50 UTC 2018


On 11/2/2018 3:23 PM, Shawn Heisey wrote:
> Process started Sep27, with G1 tuning, but no parameters setting 
> specific generation sizes.

Another followup.

Here's the GC logfiles currently found in the logs directory:

-rw-rw-r--. 1 solr solr 20973298 Oct  3 04:08 solr_gc.log.0
-rw-rw-r--. 1 solr solr 20974540 Oct  8 06:33 solr_gc.log.1
-rw-rw-r--. 1 solr solr 20971712 Oct 14 16:22 solr_gc.log.2
-rw-rw-r--. 1 solr solr 20971895 Oct 20 05:42 solr_gc.log.3
-rw-rw-r--. 1 solr solr 20971661 Oct 24 15:18 solr_gc.log.4
-rw-rw-r--. 1 solr solr 20974231 Oct 29 05:47 solr_gc.log.5
-rw-rw-r--. 1 solr solr 17246462 Nov  2 18:15 solr_gc.log.6.current

Only files numbered 1 through 6 contain the -XX:MaxNewSize parameter.  
The info in the previous message was obtained from the last logfile, the 
one with current in the name.

The first logfile, solr_gc.log.0, does NOT contain that parameter.  
Here's the top of the logfile and the first log entry, showing 
consistency between the first log and the the info output by the ps 
command -- but the -XX:MaxNewSize parameter is not present:

Java HotSpot(TM) 64-Bit Server VM (25.162-b12) for linux-amd64 JRE 
(1.8.0_162-b12), built on Dec 19 2017 21:15:48 by "java_re" with gcc 
4.3.0 20080428 (Red Hat 4.3.0-8)
Memory: 4k page, physical 16268024k(8771152k free), swap 
2098172k(2098096k free)
CommandLine flags: -XX:+AggressiveOpts -XX:G1HeapRegionSize=8388608 
-XX:GCLogFileSize=20971520 -XX:InitialHeapSize=8328839168 
-XX:InitiatingHeapOccupancyPercent=75 -XX:+ManagementServer 
-XX:MaxGCPauseMillis=250 -XX:MaxHeapSize=8328839168 
-XX:NumberOfGCLogFiles=9 
-XX:OnOutOfMemoryError=/data/solr/bin/oom_solr.sh 8983 
/data/solr-home/logs -XX:+ParallelRefProcEnabled 
-XX:+PerfDisableSharedMem -XX:+PrintGC 
-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps 
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC 
-XX:+PrintTenuringDistribution -XX:ThreadStackSize=256 
-XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC 
-XX:+UseGCLogFileRotation -XX:+UseLargePages
2018-09-27T01:11:19.136-0400: 0.518: Total time for which application 
threads were stopped: 0.0001694 seconds, Stopping threads took: 
0.0000184 seconds

So that means that in the first GC logfile written by Java, that 
parameter wasn't there, but then it was added for the rest of the 
logfiles.  Which is REALLY odd.

My best guess is that G1GC eventually decided on the size of the eden 
generation that it wanted to use, and then added the explicit 
commandline option for that size to the active arguments.  I had thought 
that G1 was capable of adjusting the generation sizes on the fly at any 
time ... but the five logs that contain the -XX:MaxNewSize option all 
have it set to the same value, which is 4991221760 bytes.  It has been 
set to that value for at least a month.

Thanks,
Shawn



More information about the hotspot-gc-use mailing list