title: Spring boot, JVM too many or just enough parameters?
body: <p>I'm trying to tune production JVMs for spring boot Microservices and for now I made this list</p>
  
  <pre><code>-XX:+UnlockExperimentalVMOptions 
  -XX:+UseCGroupMemoryLimitForHeap 
  -XX:MaxRAMFraction=2
  -XX:+UseStringDeduplication 
  -XX:+PrintStringDeduplicationStatistics 
  -XX:+CrashOnOutOfMemoryError 
  -XX:+HeapDumpOnOutOfMemoryError 
  -XX:+UseG1GC 
  -XX:+PrintGCDetails 
  -XX:+PrintGCDateStamps 
  -Xloggc:/tmp/gc.log 
  -XX:+UseGCLogFileRotation 
  -XX:NumberOfGCLogFiles=5 
  -XX:GCLogFileSize=2000k 
  -XX:HeapDumpPath='/var/log/heap_dump.log' 
  -XX:+UseGCOverheadLimit
  -XX:NativeMemoryTracking=summary
  -XX:+UnlockDiagnosticVMOptions 
  -XX:+PrintNMTStatistics
  </code></pre>
  
  <p>What do you think, if I noticed that non of them 'duplicate' their functionality but I'm still not 100% is it enough or maybe I could add/remove some of them without worry of losing information.</p>
  
  <p>my aim is to get as many information what is happening in jvm as I can get and to tune memory/gc performance to avoid oom. 
  App is running on was in docker.</p>
  
  <p>Some details: jdk 1.8 u152
  spring-boot(s): 1.5.1</p>