title: How to determine which GC I use?
body: <p>I didn't specify any GC, and I think my JVM have not any GC be enabled by default.</p>
  
  <p>Of course I know that OpenJDK8 use ParallelGC by default, but I think it should can print by command line, like this:</p>
  
  <p><code>java -XX:+PrintFlagsFinal|grep Use|grep GC</code> </p>
  
  <p>I expect that the output contains 
  <code>bool UseParallelOldGC = true {product}</code> but it is no :</p>
  
  <pre><code>     bool ParGCUseLocalOverflow                     = false                               {product}
       bool UseAdaptiveGCBoundary                     = false                               {product}
       bool UseAdaptiveSizeDecayMajorGCCost           = true                                {product}
       bool UseAdaptiveSizePolicyWithSystemGC         = false                               {product}
       bool UseAutoGCSelectPolicy                     = false                               {product}
       bool UseConcMarkSweepGC                        = false                               {product}
       bool UseDynamicNumberOfGCThreads               = false                               {product}
       bool UseG1GC                                   = false                               {product}
       bool UseGCLogFileRotation                      = false                               {product}
       bool UseGCOverheadLimit                        = true                                {product}
       bool UseGCTaskAffinity                         = false                               {product}
       bool UseMaximumCompactionOnSystemGC            = true                                {product}
       bool UseParNewGC                               = false                               {product}
       bool UseParallelGC                             = false                               {product}
       bool UseParallelOldGC                          = false                               {product}
       bool UseSerialGC                               = false                               {product}
  </code></pre>
  
  <p>and </p>
  
  <p><code>java -XX:+PrintCommandLineFlags -version</code> </p>
  
  <p>I expect that the output contains: <code>XX:+UseParallelGC</code> but it is no too:</p>
  
  <pre><code>-XX:InitialHeapSize=460493056 -XX:MaxHeapSize=7367888896 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops 
  .
  </code></pre>
  
  <p>My JVM options: </p>
  
  <pre><code>-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -verbose:gc -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime
  .
  </code></pre>
  
  <p>the above output show that no any GC be enabled(I think so), I am very confuse by this situation.</p>
  
  <p>The GC logs output like:</p>
  
  <pre><code>OpenJDK 64-Bit Server VM (25.181-b13) for linux-amd64 JRE (1.8.0_181-b13), built on Oct 23 2018 11:39:12 by "buildozer" with gcc 6.4.0
  Memory: 4k page, physical 28780816k(6283132k free), swap 0k(0k free)
  CommandLine flags: -XX:InitialHeapSize=460493056 -XX:MaxHeapSize=7367888896 -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps -XX:+PrintGCDeta
  ils -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+UseCompressedClassPointers -XX:+UseCompressedOops 
  {Heap before GC invocations=0 (full 0):
   def new generation   total 135168K, used 120192K [0x0000000608c00000, 0x0000000611ea0000, 0x000000069b2a0000)
    eden space 120192K, 100% used [0x0000000608c00000, 0x0000000610160000, 0x0000000610160000)
    from space 14976K,   0% used [0x0000000610160000, 0x0000000610160000, 0x0000000611000000)
    to   space 14976K,   0% used [0x0000000611000000, 0x0000000611000000, 0x0000000611ea0000)
   tenured generation   total 300416K, used 0K [0x000000069b2a0000, 0x00000006ad800000, 0x00000007c0000000)
     the space 300416K,   0% used [0x000000069b2a0000, 0x000000069b2a0000, 0x000000069b2a0200, 0x00000006ad800000)
   Metaspace       used 20532K, capacity 20780K, committed 20992K, reserved 1067008K
    class space    used 2628K, capacity 2726K, committed 2816K, reserved 1048576K
  2019-02-25T06:29:46.105+0000: 2.890: [GC (Allocation Failure) 2019-02-25T06:29:46.105+0000: 2.890: [DefNew
  Desired survivor size 7667712 bytes, new threshold 1 (max 15)
  - age   1:   15335424 bytes,   15335424 total
  : 120192K-&gt;14976K(135168K), 0.0238110 secs] 120192K-&gt;18041K(435584K), 0.0238765 secs] [Times: user=0.01 sys=0.01, real=0.02 secs] 
  Heap after GC invocations=1 (full 0):
   def new generation   total 135168K, used 14976K [0x0000000608c00000, 0x0000000611ea0000, 0x000000069b2a0000)
    eden space 120192K,   0% used [0x0000000608c00000, 0x0000000608c00000, 0x0000000610160000)
    from space 14976K, 100% used [0x0000000611000000, 0x0000000611ea0000, 0x0000000611ea0000)
    to   space 14976K,   0% used [0x0000000610160000, 0x0000000610160000, 0x0000000611000000)
   tenured generation   total 300416K, used 3065K [0x000000069b2a0000, 0x00000006ad800000, 0x00000007c0000000)
     the space 300416K,   1% used [0x000000069b2a0000, 0x000000069b59e660, 0x000000069b59e800, 0x00000006ad800000)
   Metaspace       used 20532K, capacity 20780K, committed 20992K, reserved 1067008K
    class space    used 2628K, capacity 2726K, committed 2816K, reserved 1048576K
  }
  2019-02-25T06:29:46.129+0000: 2.914: Total time for which application threads were stopped: 0.0241189 seconds, Stopping threads took: 0.0000181 seconds
  {Heap before GC invocations=1 (full 0):
   def new generation   total 135168K, used 21860K [0x0000000608c00000, 0x0000000611ea0000, 0x000000069b2a0000)
    eden space 120192K,   5% used [0x0000000608c00000, 0x00000006092b93f8, 0x0000000610160000)
    from space 14976K, 100% used [0x0000000611000000, 0x0000000611ea0000, 0x0000000611ea0000)
    to   space 14976K,   0% used [0x0000000610160000, 0x0000000610160000, 0x0000000611000000)
   tenured generation   total 300416K, used 3065K [0x000000069b2a0000, 0x00000006ad800000, 0x00000007c0000000)
     the space 300416K,   1% used [0x000000069b2a0000, 0x000000069b59e660, 0x000000069b59e800, 0x00000006ad800000)
   Metaspace       used 20982K, capacity 21132K, committed 21248K, reserved 1067008K
    class space    used 2667K, capacity 2758K, committed 2816K, reserved 1048576K
  2019-02-25T06:29:46.187+0000: 2.972: [Full GC (Metadata GC Threshold) 2019-02-25T06:29:46.187+0000: 2.972: [Tenured: 3065K-&gt;9617K(300416K), 0.0270556 secs] 24926K-
  &gt;9617K(435584K), [Metaspace: 20982K-&gt;20982K(1067008K)], 0.0271334 secs] [Times: user=0.03 sys=0.00, real=0.03 secs] 
  Heap after GC invocations=2 (full 1):
   def new generation   total 135296K, used 0K [0x0000000608c00000, 0x0000000611ec0000, 0x000000069b2a0000)
    eden space 120320K,   0% used [0x0000000608c00000, 0x0000000608c00000, 0x0000000610180000)
    from space 14976K,   0% used [0x0000000610180000, 0x0000000610180000, 0x0000000611020000)
    to   space 14976K,   0% used [0x0000000611020000, 0x0000000611020000, 0x0000000611ec0000)
   tenured generation   total 300416K, used 9617K [0x000000069b2a0000, 0x00000006ad800000, 0x00000007c0000000)
     the space 300416K,   3% used [0x000000069b2a0000, 0x000000069bc04698, 0x000000069bc04800, 0x00000006ad800000)
   Metaspace       used 20982K, capacity 21132K, committed 21248K, reserved 1067008K
    class space    used 2667K, capacity 2758K, committed 2816K, reserved 1048576K
  }
  </code></pre>
  
  <p>(from app starting until first major GC)</p>
  
  <p>The log show that JVM heap is divided into <code>new</code> and <code>tenured</code>, but without print GC type.</p>
  
  <p>Sadly, I also cannot use <code>jmap -heap {pid}</code> to get the GC type because jmap without this option(-heap) in my env.</p>
  
  <p>So I wanted knows that:</p>
  
  <ol>
  <li>Which GC is what I use really?</li>
  <li>Is the command line options(<code>-XX:+PrintCommandLineFlags</code> and <code>-XX:+PrintFlagsFinal</code>) output information correct?</li>
  </ol>
  
  <p>My env:
  k8s+docker, Alpine OpenJKD8</p>