首页 > 系统相关 >jmap——Java内存分析工具

jmap——Java内存分析工具

时间:2023-01-08 20:34:04浏览次数:66  
标签:Java pid 转储 内存 动态链接库 jmap

jmap是JDK自带的监控工具,在JDK的根目录中可以找到。主要用来查看Java进程对内存的使用情况

1、查看类列表,包含实例数、占用内存大小

# pid 是进程ID
jmap -histo:live pid

按照占用空间的大小打印程序中类的列表,可以分析哪些类占用了比较多的内存,再结合代码找到问题的所在

2、查看动态链接库的列表

jmap pid

Java进程本身和动态链接库都会在其占用的虚拟地址空间上分配内存。Java的堆和栈等内存空间分配在Java进程中,Java的直接内存会分配在Java进程堆内存外或者依赖的动态链接库上。此命令可以帮助定位Java进程占用内存较大或者底层动态链接库占用内存较大的问题,在定位Java进程导致的内存泄露场景中有很重要的作用。

3、查看Java堆的概要信息

jmap -heap pid

Java堆内存结构复杂,包括新生代、老年代、持久代、直接内存等。

包含以下信息:

  • 被指定的垃圾回收算法的信息,包括垃圾回收算法的名称和垃圾回收算法的详细信息。
  • 堆的配置信息,可能是由命令行选项指定,或者由Java虚拟机根据服务器配置选择的。
  • 堆的内存空间使用信息,包括分代情况,每个代的总容量、已使用内存、可使用内存。如果某一代被继续细分(例如,年轻代),则包含细分的空间的内存使用信息。

4、生成Java虚拟机的堆转储快照 dump文件

有些Java内存问题不是显而易见的,从类、动态链接库、堆的概要信息的角度无法定位具体产生的原因,我们需要对Java堆的内部结构进行剖析才能进一步分析产生问题的根本原因。

生成快照后,通过其它工具甚至可视化内存分析工具等进行详细分析(JHAT、JMAT、JProfiler、JConsole、JVisualVM)

jmap -dump:[live,]format=b,file=./heap.hprof pid
  • live参数是可选的,如果指定,则只转储堆中的活动对象;如果没有指定,则转储堆中的所有对象。
  • format=b表示以hprof二进制格式转储Java堆的内存。
  • file=<filename>用于指定快照dump文件的文件名。

 

标签:Java,pid,转储,内存,动态链接库,jmap
From: https://www.cnblogs.com/shog808/p/17035280.html

相关文章

  • 关于Java,Java环境配置
    Java虚拟机JVMJava特性和优势简单性面向对象可移植性高性能分布式动态性多线程安全性健壮性Java三个版本JavaSe标准版(桌面程序、控制台开发)JavaMe嵌入式开发JavaEE......
  • 碎冰挂船与按键精灵读内存地址
    昨天使用古老的按键精灵写个脚本,用来给老叶的海盗王挂船熟,每隔一个小时都要补一次船实在太麻烦了。好吧,古老的游戏,和古老的工具。一般很少上游戏了,也不想打装备,不想升级装......
  • 09.(结构型模式)java设计模式之装饰器模式
    一、什么是装饰器模式简介:也叫包装设计模式,属于结构型模式,它是作为现有的类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构。给对象增加功能,一般两种......
  • java代码的基本组成
    我们可以通过上一篇博客写的内容来分析java代码的组成java代码的组成我们可以大致分成4个部分一、标识符除了关键字(有颜色的,可以看到上方图片)以外,自己们写的单词(黑色部分......
  • java:跳跃——寻找路径
    题目描述小蓝在一个n行m列的方格图中玩一个游戏。开始时,小蓝站在方格图的左上角,即第1行第1列。小蓝可以在方格图上走动,走动时,如果当前在第r 行第 c 列,他不能走到行号......
  • JAVA 内部类
    内部类内部类就是在一个类的内部再定义一个类,比如A类中定义了一个B类,那么B类相对A类来说就称为内部类,而A类相对与B类来说就是外部类了。成员内部类静态内部类局部内部......
  • Java面试题笔记
    1Hystrix的状态有哪些closed->open:正常情况下熔断器为closed状态,当访问同一个接口次数超过设定阈值并且错误比例超过设置错误阈值的时候,就会打开熔断机制,这时候熔断......
  • JAVA 接口
    普通类:只有具体实现抽象类:具体实现和规范(抽象方法)都有!接口:只有规范!自己无法写方法~专业约束~约束和实现分离:面向接口编程~  接口就是规范,定义的是一组规则,体现了......
  • JavaWeb概述
    笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html)参考视频:黑马程序员新版JavaWeb基础教程,Javaweb从入门到企业实战完整版注意:javaWeb部分包含了前端和后......
  • 【Java】四种引用和引用队列的概念
    四种引用类型强引用(StrongReference)强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用:Objectobject=newObject();Stringstr=......