JVM命令行监控工具之jmap(JVM Memory Map)

article/2025/8/18 19:37:33

jmap简介

jmap(JVM Memory Map)一方面可以获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、类加载信息等。
在这里插入图片描述

选项作用
-dump生成dump文件
-finalizerinfo以ClassLoader为统计口径输出永久代的内存状态信息
-heap输出整个堆空间的详细信息,包括GC的使用、堆配置信息,以及内存的使用信息等
-histo输出堆空间中对象的统计信息,包括类、实例数量和合计容量
-permstat以ClassLoader为统计口径输出永久代的内存状态信息
-F当虚拟机进程对-dump选项没有任何响应时,强制执行生成dump文件

1)导出内存映像文件

Heap dump又称为堆转储文件,指一个Java进程在某个时间点的内存快照。
注:通常在写Heap dump文件之前,会执行一次Full GC,所以heap dump中保存的都是Full GC后留下的对象信息。

手动导出

在这里插入图片描述

[root@bogon ~]# jmap -dump:format=b,file=/opt/1.hprof 12023
Dumping heap to /opt/1.hprof ...
Heap dump file created
[root@bogon ~]# jmap -dump:live,format=b,file=/opt/2.hprof 12023
Dumping heap to /opt/2.hprof ...
Heap dump file created

自动导出

JVM中配置以下参数,当发生OOM时,将导出应用程序的当前堆快照。

-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=/opt/3.hprof

2)显示堆内存相关信息

jmap -heap

[root@bogon ~]# jmap -heap 12023
Attaching to process ID 12023, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.144-b01using thread-local object allocation.
Mark Sweep Compact GCHeap Configuration:MinHeapFreeRatio         = 40MaxHeapFreeRatio         = 90MaxHeapSize              = 8388608 (8.0MB)NewSize                  = 2752512 (2.625MB)MaxNewSize               = 2752512 (2.625MB)OldSize                  = 5636096 (5.375MB)NewRatio                 = 2SurvivorRatio            = 8MetaspaceSize            = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:
New Generation (Eden + 1 Survivor Space):capacity = 2490368 (2.375MB)used     = 0 (0.0MB)free     = 2490368 (2.375MB)0.0% used
Eden Space:capacity = 2228224 (2.125MB)used     = 0 (0.0MB)free     = 2228224 (2.125MB)0.0% used
From Space:capacity = 262144 (0.25MB)used     = 0 (0.0MB)free     = 262144 (0.25MB)0.0% used
To Space:capacity = 262144 (0.25MB)used     = 0 (0.0MB)free     = 262144 (0.25MB)0.0% used
tenured generation:capacity = 5636096 (5.375MB)used     = 283800 (0.27065277099609375MB)free     = 5352296 (5.104347229003906MB)5.035400390625% used749 interned Strings occupying 50616 bytes.

jmap -histo

在这里插入图片描述

jmap -histo  12023

由于jmap将访问堆中的所有对象,为了保证在此过程中不被应用线程干扰,jmap需要借助安全点机制,让所有线程停留在不改变堆中数据的状态。也就是说,由jmap导出的堆快照必定是安全点位置的。这可能导致基于该对快照的分析结果存在偏差。

例如:假设在编译生成的机器码中,某些堆对象的生命周期在两个安全点之间,那么:live选项将无法探知到这些对象。

另外,如果某个线程长时间无法跑到安全点,jmap将一直等下去。与jstat不同的是,垃圾回收器会主动将jstat所需要的摘要数据保存至固定位置之中,而jstat只需直接读取即可

3)查看系统的ClassLoader信息

jmap -clstats 14237

在这里插入图片描述

4)查看堆积在finalizer队列中的对象

在这里插入图片描述


http://chatgpt.dhexx.cn/article/NWvWQxG1.shtml

相关文章

jmap详解

这里写自定义目录标题 简介理论知识实践部分1. 找到进程id2. 生成内存快照3. Java堆和方法区的详细信息、内存空间使用率、当前用的是哪种收集器 简介 这个命令非常重要,主要是生成java进程当前(当前指的是执行命令的时刻)内存堆转储快照&am…

jmap的使用以及内存溢出分析

jmap的使用以及内存溢出分析 jmap(java内存映像工具) jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。还有几种方式获取dump文件:使用JVM参数选项-XX:HeapDumpOnOutOfMemoryError参数&#xff…

Java的jmap命令使用详解

jmap命令简介 jmap(Java Virtual Machine Memory Map)是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。除此以外,jmap命令还可以查看finalize执行队列、Java堆和方法区的详细信息,比如空间使用率、当前使用…

Python Numpy .npy文件打开

首先找到你的npy文件的路径(我的npy文件在D盘下,名字叫test.npy) 2 打开编写python的软件(我的软件是pycharm) 3 新建一个python文件,用于后面的编程使用。(我先建的python文件名叫test&#xf…

Numpy文件交互:.npy和.npz有什么区别?

文章目录 saveloadsavezsavez_compressed Numpy提供了以.npy为后缀的文件存储方案,与这种文件格式密切相关的读、写函数分别是np.load和np.save。通过savez可以一次性存储多个数组,并可通过load以键值对的形式读取出来;如果觉得文件太大&…

什么是npy文件,为什么要用npy格式保存文件?

文章目录 一、官方文档(中文)二、官方文档(英文)三、为什么要用npy文件保存文件四、读取和保存(1)加载npy文件,并将npy文件写入一个txt文件(2)保存npy文件(3&…

深度学习入门之如何制作npz、npy文件

一、需求 论文《EyeTracking for everyone》中提出了iTracker神经网络,并构建了一个叫GazeCapture的数据库,将其部分数据集下载后,可以看到文件的层次结构如下图所示: 其中,整个数据集的后缀名是npz,内部文件的后缀名是npy。由于该数据集是面向Apple产品系列的,而我的…

tecplot切面

注意要选择Volume Zone

面向切面

面向切面是什么 AOP即面向切面编程。 让你只专注于核心业务功能的实现,而不用花太多精力去管像日志、事务等各个项目通用的功能。 把非核心的业务逻辑抽象成一个切面,在程序运行过程中自动注入该功能,这就是面向切面,其底层是通…

Spring AOP 之 多切面

接着上文:https://blog.csdn.net/single_wolf_wolf/article/details/81772837 多切面 相对来说,只是定义多个切面类,同时配置类中设置一下, demo如下: 首先定义一个接口: package com.cmb.multi;public…

spring切面注解失效

在项目中使用切面注解做数据脱敏时,导出的数据也需要脱敏处理,遇到了在一个类里面调用本类的方法切面失效,解决方法如下: 切面注解: package com.t3.ts.driver.resume.aspect;import java.lang.annotation.*;/*** Description: 数据脱敏注解 Filed* Date: 2019/9/10* Author:…

自定义切面类

直接贴入代码 ,注释写的很清楚 此处为controller层 方法上加上自定义的切面注解 入参实体 public class TestM extends BaseModel{/****/private static final long serialVersionUID 1L; private String a;public String getA() {return a; }public void setA(S…

java 切面 注解_十、使用注解定义切面

一、本课目标 掌握使用注解实现AOP的方法 二、使用注解定义切面 2.1简介 AspectJ 面向切面的框架,它扩展了Java语言,定义了AOP语法,能够在编译期提供代码的织入。 @AspectJ AspectJ5新增的功能,使用JDK5.0注解技术和正规的AspectJ切点表达式语言描述切面(所以在使用@Aspect…

Spring 创建切面

目录 1、概述 2、切点类型 3、切面类型 4、静态普通方法名匹配切面 5、静态正则表达式方法匹配切面 6、动态切面 7、流程切面 8、复合切点切面 9、总结 1、概述 在前面介绍各类增强时,大家可能没有注意到一个问题:增强被织入到目标类的所有方法…

Spring基础:切面

前言在之前的文章中总结了 AOP 在 Spring 中的作用及地位,在分析 AOP 时涉及到切面的内容,这一节详细的分析切面的知识点。 正题 在开始文章前,有几个问题需要思考一下: 切面到底是神马切面的构成切面有哪些实现类切面有哪些类型…

java使用spring aop切面编程

aop概念 1、切面(Aspect) 首先要理解‘切’字,需要把对象想象成一个立方体,传统的面向对象变成思维,类定义完成之后(封装)。每次实例化一个对象,对类定义中的成员变量赋值,就相当于对这个立方体…

【Spring】面向切面编程详解(AOP)

文章目录 一、AOP概述什么是AOPAOP应用场景 二、AOP的基本术语术语介绍术语举例详解 三、AOP实例说明四、通知类型详解概述前置通知后置通知环绕通知最终通知 六、AOP实现声明式事务结语 🌕博客x主页:己不由心王道长🌕! 🌎文章说明…

时间序列预测方法

之前一直在看时间序列预测方法的文献,最近终于有点头绪了,然后就花了些时间来做一下整理。时间序列预测方法可分为传统的,基于机器学习的和基于深度学习的,以下每一方面都列举了几个比较经典的模型算法。 目录 1 背景 2 传统的时…

时间序列预处理

数据预处理的主要流程为:数据清洗、特征选择、归一化处理、划分窗口、Shuffle和划分数据集等五个阶段。选用何种方法没有统一的标准,只能根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择与其最适配的数据…

时间序列分析相关概念

1. 在时间序列分析中, 数学模型是什么?数学公式又是什么?数学推导过程又是什么?… … 一句话:用数学公式后者符号来表示现实存在的意义。数学是“万金油”的科学,它是作为工作和分析方法运用到某个学科当中…