网站首页 > java教程 正文
java使用NMT Native Memory Tracking分析内存占用
开启NMT
NMT目前只能在启动的时候开启,不支持动态开关NMT功能。开启NMT功能,会带来5%到10%的额外开销
通过-XX:NativeMemoryTracking=[off | summary | detail]来开启NMT功能。
- off 关闭NMT功能,默认关闭
- summary 仅收集子系统聚合的内存使用情况
- detail 收集各个调用点的内存使用情况。
使用jcmd功能获取NMT数据
可以使用jcmd收集数据,或者是与基线进行对比
jcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]
jcmd NMT选项 | 描述 |
summary | 打印summary |
detail | 打印按分类聚合的内存使用、打印按调用聚合的内存使用、打印虚拟内存映射 |
baseline | 建立内存使用基线 |
summary.diff | 打印summary和基线的对比 |
detail.diff | 打印detail和基线的对比 |
shutdown | 停止NMT |
实战演示
jcmd 27 VM.native_memory summary scale=MB
Native Memory Tracking:
(Omitting categories weighting less than 1MB)
Total: reserved=2830MB, committed=1288MB
- Java Heap (reserved=1024MB, committed=1024MB)
(mmap: reserved=1024MB, committed=1024MB)
- Class (reserved=1025MB, committed=6MB)
(classes #8980)
( instance classes #8430, array classes #550)
(malloc=1MB #20044)
(mmap: reserved=1024MB, committed=5MB)
( Metadata: )
( reserved=40MB, committed=38MB)
( used=38MB)
( waste=0MB =0.34%)
( Class space:)
( reserved=1024MB, committed=5MB)
( used=5MB)
( waste=0MB =2.88%)
- Thread (reserved=312MB, committed=16MB)
(thread #156)
(stack: reserved=312MB, committed=16MB)
- Code (reserved=243MB, committed=18MB)
(malloc=1MB #6733)
(mmap: reserved=242MB, committed=17MB)
- GC (reserved=83MB, committed=83MB)
(malloc=13MB #7985)
(mmap: reserved=70MB, committed=70MB)
- Internal (reserved=14MB, committed=14MB)
(malloc=14MB #10083)
- Other (reserved=61MB, committed=61MB)
(malloc=61MB #126)
- Symbol (reserved=9MB, committed=9MB)
(malloc=8MB #224838)
(arena=1MB #1)
- Native Memory Tracking (reserved=5MB, committed=5MB)
(tracking overhead=4MB)
- Shared class space (reserved=12MB, committed=12MB)
(mmap: reserved=12MB, committed=12MB)
- Metaspace (reserved=40MB, committed=38MB)
(mmap: reserved=40MB, committed=38MB)
猜你喜欢
- 2025-10-14 看完这篇文,别再说你不懂Java内存模型了!
- 2025-10-14 Java volatile关键字深度解析:多线程编程的"内存屏障"神器
- 2025-10-14 Java内存模型JMM重要知识点_java内存模型有哪些
- 2025-10-14 Java 内存模型与并发编程中的可见性、原子性、有序性有啥关联
- 2025-10-14 让我们深入了解有关Java内存泄漏的10件事情
- 2025-10-14 Java中的volatile与操作系统的内存重排详解
- 2025-10-14 Java内存模型的历史变迁_java内存模型原理
- 2025-10-14 Kubernetes 下 Java 应用内存调优实战指南
- 2025-10-14 【java面试100问】03 在生产环境上,发现内存泄漏问题,如何排查?
- 2025-10-14 Java 进程占用内存过多,幕后元凶原来是线程太多
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)