首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测者的性能测试手册: 内存异常-JVM内存故障排查方法

测者的性能测试手册: 内存异常-JVM内存故障排查方法

作者头像
Criss@陈磊
发布2019-08-02 11:42:25
8680
发布2019-08-02 11:42:25
举报

系统的故障诊断是一个一步一步排除可能疑点最后找到问题所在的过程。今天测者和你一起学习JVM内存的故障排查方法。

Native Memory Tracking是什么

Native Memory Tracking (NMT) 是Java Hotspot VM的一个功能。用来跟踪Java 内存的使用情况,NMT可以追踪到堆内内存、code区域、通过unsafe.allocateMemory和DirectByteBuffer申请的内存,NMT不能跟踪C代码的申请的堆外内存的情况,因此有些时候需要配合操作系统级的内存检测工具使用。

Native Memory Tracking(NMT)的使用

NMT的使用是通过配置JVM启动参数来设置的,具体如下:

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

参数说明如下:

参数

说明

off

默认是off,关闭NMT

summary

只收集汇总信息

detail

收集全部信息

特别提醒:开启NMT后,性能会有5%-10%的损耗,因此,在发现有内存问题后,才能使用该工具,没有发现问题的时候,尽量使其关闭。

jcmd查看NMT报告

JDK提供了jcmd工具查看NMT的监控结果,具体格式如下:

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

参数说明:

参数

说明

summary

只打印按照分类汇总信息

detail

打印按类别汇总的内存使用情况、打印虚拟内存映射、打印由呼叫站点聚合的内存使用情况

baseline

创建内存快照,以比较不同时间的内存差异

summary.diff

打印自上次baseline到现在的内存差异,显示汇总信息

detail.diff

打印自上次baseline到现在的内存差异, 显示详细信息

shutdown

关闭NMT功能

其中,scale 指定内存单位,默认为KB

其他一些辅助参数

在NMT退出的时候打印NMT报告

-XX:+PrintNMTStatistics -XX:+UnlockDiagnosticVMOptions

关闭NMT自动关闭功能

当NMT发现系统资源不足的时候,自行关闭。很多时候你并不希望这样,因此需要现实的告诉NMT不能关闭:

-XX:-AutoShutdownNMT

内存问题举例子

现象

JVM启动参数中设置:

-Xmx=4G

分析

加入 -XX:NativeMemoryTracking=summary启动参数后,重启。查看NMT报告如下(重点关注committed大小,这个是实际使用的内存大小):

7740: #进程ID

Native Memory Tracking:

Total: reserved=6478032KB, committed=5440716KB
-                 Java Heap (reserved=4104204KB, committed=4194304KB) 
                            (mmap: reserved=4194304KB, committed=4194304KB)

通过报告发现实际占committed大于物理内存,因此可以怀疑存在内存泄露问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 质问 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Native Memory Tracking是什么
  • Native Memory Tracking(NMT)的使用
  • jcmd查看NMT报告
  • 其他一些辅助参数
    • 在NMT退出的时候打印NMT报告
      • 关闭NMT自动关闭功能
      • 内存问题举例子
        • 现象
          • 分析
          相关产品与服务
          检测工具
          域名服务检测工具(Detection Tools)提供了全面的智能化域名诊断,包括Whois、DNS生效等特性检测,同时提供SSL证书相关特性检测,保障您的域名和网站健康。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档