RSS 是否跟踪保留或提交的内存?
Does RSS tracks reserved or commited memory?
我 运行 在 java 8 上使用不同的 jvm 选项进行实验以降低 RSS:
用于 Rss 跟踪的脚本:
ps -o rss -o vsz -o pid $pid
用于设置 java 进程的 JVM 参数:
-XX:+PrintNMTStatistics -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=detail
使用 jcmd 获取基线:
jcmd $pid VM.native_memory baseline
使用 jcmd 比较:
jcmd $pid VM.native_memory summary.diff
输出(线程区域的部分):
- 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)
问题:
上面输出的 RSS 将考虑什么内存,是 committed
还是 reserved
?
reserved/committed和resident/virtual之间的关系有点复杂。 RSS 涵盖物理内存中 resident 页。已调出(或从未调入)的内容可以提交内存但不能驻留。
也许这回答了您的问题:保留但未提交的页面不能驻留。
我 运行 在 java 8 上使用不同的 jvm 选项进行实验以降低 RSS:
用于 Rss 跟踪的脚本:
ps -o rss -o vsz -o pid $pid
用于设置 java 进程的 JVM 参数:
-XX:+PrintNMTStatistics -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=detail
使用 jcmd 获取基线:
jcmd $pid VM.native_memory baseline
使用 jcmd 比较:
jcmd $pid VM.native_memory summary.diff
输出(线程区域的部分):
- 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)
问题:
上面输出的 RSS 将考虑什么内存,是 committed
还是 reserved
?
reserved/committed和resident/virtual之间的关系有点复杂。 RSS 涵盖物理内存中 resident 页。已调出(或从未调入)的内容可以提交内存但不能驻留。
也许这回答了您的问题:保留但未提交的页面不能驻留。