KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I need help understanding how the GC-related numbers I'm getting from jmap and jstat relate to the settings I'm passing to java. I'm starting the app (solr) with the following settings on a sever with 16GB of memory: -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -Xms12144m -Xmx12144m -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops The output of jmap begins: Concurrent Mark-Sweep GC Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 12733906944 (12144.0MB) NewSize = 2686976 (2.5625MB) MaxNewSize = 130809856 (124.75MB) OldSize = 5439488 (5.1875MB) NewRatio = 4 SurvivorRatio = 8 PermSize = 21757952 (20.75MB) MaxPermSize = 176160768 (168.0MB) Why are NewSize , MaxNewSize , OldSize , and PermSize all so small, when the MaxHeapSize is large? Shouldn't NewSize + OldSize = heap size ? And shouldn't the overall heap size be approaching MaxHeapSize ? Why is NewSize exactly half of OldSize when the NewRatio is set to 4? The rest of the jmap output is below. It matches the above, and includes a section concurrent mark-sweep generation which I also don't know how to interpret. Additionally, the GC logs indicate that the "desired survivor size" is 6.2MB, which is also strange given I understand -XX:SurvivorRatio=8 should make the survivor space 1/8 of NewSize . Finally, I only ever see ParNew messages in my GC log, which I understand is the GC for Eden. Heap Usage: New Generation (Eden + 1 Survivor Space): capacity = 117768192 (112.3125MB) used = 20402232 (19.45708465576172MB) free = 97365960 (92.8554
Tags (comma-separated)
Save Edits
Cancel