博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十二、jdk命令之Java内存之本地内存分析神器:NMT 和 pmap
阅读量:5986 次
发布时间:2019-06-20

本文共 2008 字,大约阅读时间需要 6 分钟。

 

目录

一、概述

NMT是Native Memory Tracking的缩写,是Java7U40引入的HotSpot新特性。 pmap,众所周知,就是Linux上用来看进程地址空间的。

二、NMT

Java7U40之后JDK提供了Native Memory Tracking工具,跟踪JVM内部的内存使用,并可以通过jcmd命令来访问。不过要注意的是NMT是通过在JVM代码中添加跟踪点的方式实现内存跟踪的,因此NMT不能跟踪第三方Native库的内存使用。

2.1、如何开启NMT

NMT功能默认关闭,可以通过以下方式开启:

-XX:NativeMemoryTracking=[off | summary | detail]
配置项 说明
off 默认配置
summary 只收集汇总信息
detail 收集每次调用的信息

注意,根据Java官方文档,开启NMT会有5%-10%的性能损耗;

如果想JVM退出时打印退出时的内存使用情况,可以通过如下配置项:

-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics

2.2、访问NMT数据

JDK提供了jcmd命令来访问NMT数据:

jcmd 
VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]
配置项 说明
summary 只打印打印按分类汇总的内存用法
detail 打印按分类汇总的内存用法、virtual memory map和每次内存分配调用
baseline 创建内存快照,以比较不同时间的内存差异
summary.diff 打印自上次baseline到现在的内存差异,显示汇总信息
detail.diff 打印自上次baseline到现在的内存差异, 显示详细信息
shutdown 关闭NMT功能
scale 指定内存单位,默认为KB

2.3、示例

启动时,加上如下的jvm参数:

-XX:MaxDirectMemorySize=10m -XX:NativeMemoryTracking=detail  -XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics

结果:

 

 

 

pmap的输出

使用命令行: pmap -p PID, 我们就可以得到对应进程的VSS&RSS信息。 

pmap输出的中,我们把其中我们比较关心的部分列在下面:

START               SIZE     RSS     PSS   DIRTY    SWAP PERM MAPPING0000000008048000 4K 4K 4K 0K 0K r-xp /usr/java/jre1.8.0_65/bin/java 0000000008049000 4K 4K 4K 4K 0K rw-p /usr/java/jre1.8.0_65/bin/java 000000000804a000 74348K 71052K 71052K 71052K 0K rw-p [heap] … 00000000ced00000 1024K 976K 976K 976K 0K rw-p [anon] … 00000000d4eaf000 12K 0K 0K 0K 0K ---p [anon] 00000000d4eb2000 312K 28K 28K 28K 0K rwxp [stack:21151] 00000000d4f00000 1024K 1024K 1024K 1024K 0K rw-p [anon] 00000000d5000000 32K 32K 32K 0K 0K r-xp /usr/java/jre1.8.0_65/jre/lib/i386/libmanagement.so 00000000d5008000 4K 4K 4K 4K 0K rw-p /usr/java/jre1.8.0_65/jre/lib/i386/libmanagement.so 00000000d500d000 324K 24K 24K 24K 0K rwxp [stack:18608] 00000000d505e000 4376K 4376K 4376K 4376K 0K rw-p [anon] 00000000d54a4000 24K 0K 0K 0K 0K ---p [anon] 00000000d54aa000 92824K 92824K 92824K 92824K 0K rw-p [anon] 00000000daf50000 174784K 174784

转载地址:http://ucylx.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
linux常用命令-命令行编辑,history,命令行快捷键,pstree,alias,命令替换,通配符
查看>>
Chapter 1 A Quick Tour
查看>>
jQuery插件之validation插件
查看>>
mysql dba系统学习(3)mysql的启动停止
查看>>
为什么说 DOM 操作很慢
查看>>
ListView设置headerview和footerview
查看>>
PHP-FPM与spawn-CGI
查看>>
struts2用户输入验证
查看>>
Scala指南-提高篇
查看>>
搭建域服务器和DNS
查看>>
性能测试入门:四步学会使用hyperpacer录制脚本
查看>>
针对应用开发者的几点建议
查看>>
我的友情链接
查看>>
Linux netstat详解
查看>>
【Python基础】08、Python模块和包
查看>>
015-求int型数据在内存中存储时1的个数
查看>>
新的篇章
查看>>
ubuntu14.04 gedit 打开txt文件乱码
查看>>
我的友情链接
查看>>