JVM 参数配置介绍专题(一)NativeMemoryTracking

一、介绍

     jvm 提供了 jmap\jstat\jps\jinfo 等一系列命令可以查看堆内存、线程等使用情况,但实际在运维的过程中还是会碰到以上命令都无法解决的场景,即:通过以上命令发现堆、线程使用的都是正常,此时就会想到会不会是堆外使用不正确造成的。为了一探究竟及需要 NativeMemoryTracking  (以下简称 NMT).

二、使用

(1) jvm 打开  NMT

-XX:NativeMemoryTracking=[off | summary | detail]
# off: 默认关闭
# summary: 只统计各个分类的内存使用情况.
# detail: Collect memory usage by individual call sites.

(2) 使用 NMT

jcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]

# summary: 分类内存使用情况.
# detail: 详细内存使用情况,除了summary信息之外还包含了虚拟内存使用情况。
# baseline: 创建内存使用快照,方便和后面做对比
# summary.diff: 和上一次baseline的summary对比
# detail.diff: 和上一次baseline的detail对比
# shutdown: 关闭NMT

(3)jvm 退出时打印 NMT

-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics

 

 

 

 

 

参考资料:

https://my.oschina.net/foxty/blog/1934968

https://www.cnblogs.com/rude3knife/p/13570423.html

posted @ 2021-06-06 10:11  夏之夜  阅读(929)  评论(0编辑  收藏  举报