jmap与jConsole,jvisualvm简介

1 .jmap简介

  jmap是用来查看某一时刻某一个java服务进程的堆状态的工具,可以查看实体加载个数,堆内存中的各个分区信息,可以将这些信息转储为一张堆的快照,由于分析堆溢出问题并研究解决方案。

2.jmap使用场景

  • 内存调优,,如果发现打开某个页面特别慢,在排除数据库查询和网络请求因素后可以通过jmap对比网页打开前后的堆情况来帮助分析定位问题。
  • 出现堆溢出问题 结合top命令和jmap查看cpu占用率,堆的GC回收情况。

3. jmap语法

  • -dump, 生成堆的转存储快照 jmap -dump :live,format=b,file=fileName pid;live:是否只dump出存活的对象。
  • -heap ,显示堆的详细信息,主要用来查看堆内划分的分代区状态,jmap -heap pid。
  • histo ,显示堆中的对象统计信息,包括类,实例数量和合计容器。
  • -F,强制生成快照。

4.实例

  • java -dump:format=b,file-dump 19881
n$ jmap dump 19818
Attaching to core 19818 from executable dump, please wait...
Error attaching to core file: cannot open binary file
sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
	at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach0(Native Method)
	at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach(LinuxDebuggerLocal.java:286)
	at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:673)
	at sun.jvm.hotspot.HotSpotAgent.setupDebuggerLinux(HotSpotAgent.java:611)
	at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:337)
	at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
	at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:156)
	at sun.jvm.hotspot.tools.Tool.start(Tool.java:191)
	at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
	at sun.jvm.hotspot.tools.PMap.main(PMap.java:72)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.tools.jmap.JMap.runTool(JMap.java:201)
	at sun.tools.jmap.JMap.main(JMap.java:130)
    解决方法: 报错原因是因为linux系统禁用了这个与这个命令相关的功能(ptrace_scope),执行 echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    参考资料 https://www.cnblogs.com/wesleyshare/p/9216645.html

在这里插入图片描述
可以使用jvisualvm分析快照
在这里插入图片描述

  • jmap -heap 19818
    在图中可以查看,青年代,老年代,临时空间的分布情况(8:1)
    在这里插入图片描述
  • jmap -histo 19818
    查看了当前项目的实体数量
    在这里插入图片描述

5.jConsloe与jvisualvm

     这两个工具为jdk自带的支持维护的工具,jvisualvm是官方主推的工具,可以查看dump文件。这两个工具都拥有图形化界面,可以查看项目进程的cpu,内存,实例数量,堆栈的使用情况。jConsloe是基于jmx连接来监测和管理的工具,主要的修改手段是mybean,而jvisualvm除了具有JConsloe的功能外,还具有可扩展的能力,并且监测的功能更加强大。
  • jConsole界面
    在这里插入图片描述

  • jvisualvm界面
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值