系统的故障诊断是一个一步一步排除可能疑点最后找到问题所在的过程。今天和你一起学习JVM内存的故障排查方法。
Native Memory Tracking是什么
Native Memory Tracking (NMT) 是Java Hotspot VM的一个功能。用来跟踪Java 内存的使用情况,NMT可以追踪到堆内内存、code区域、通过unsafe.allocateMemory和DirectByteBuffer申请的内存,NMT不能跟踪C代码的申请的堆外内存的情况,因此有些时候需要配合操作系统级的内存检测工具使用。
Native Memory Tracking(NMT)的使用
-
-XX:NativeMemoryTracking=[off | summary | detail]
-
# off: 默认关闭
-
# summary: 只统计各个分类的内存使用情况.
-
# detail: Collect memory usage by individual call sites.
参数说明如下:
参数 | 说明 |
---|---|
off | 默认是off,关闭NMT |
summary | 只收集汇总信息 |
detail | 收集全部信息 |
特别提醒:开启NMT后,性能会有5%-10%的损耗,因此,在发现有内存问题后,才能使用该工具,没有发现