I'm running experiments with different jvm options on java 8 in order to lower RSS:
Script used for Rss tracking:
ps -o rss -o vsz -o pid $pid
JVM args for setting up java process:
-XX:+PrintNMTStatistics -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=detail
Taking baseline with jcmd:
jcmd $pid VM.native_memory baseline
Taking diff with jcmd:
jcmd $pid VM.native_memory summary.diff
Output (partial for Thread area):
- Thread (reserved=130696KB -21564KB, committed=130696KB -21564KB)
(thread #121 -21)
(stack: reserved=130048KB -21504KB, committed=130048KB -21504KB)
(malloc=379KB -67KB #610 -105)
(arena=268KB +7 #240 -42)
Question:
What memory will be taken into account for RSS from output above, is it committed
or reserved
?
The relation between reserved/committed and resident/virtual is a little more complex. RSS covers pages resident in physical memory. Things that have been paged out (or never paged in) can be committed memory but not resident.
Maybe this answers your question: reserved-but-not-committed pages cannot be resident.