jmap详解

article/2025/8/18 19:34:39

这里写自定义目录标题

  • 简介
  • 理论知识
  • 实践部分
    • 1. 找到进程id
    • 2. 生成内存快照
    • 3. Java堆和方法区的详细信息、内存空间使用率、当前用的是哪种收集器

简介

这个命令非常重要,主要是生成java进程当前(当前指的是执行命令的时刻)内存堆转储快照,生成的快照经常用于分析内存溢出或者内存泄漏相关的问题。
当然,除了生成内存快照,还可以有如下作用:

  1. Java堆和方法区的详细信息
  2. 内存空间使用率
  3. 当前用的是哪种收集器

理论知识

jmap的命令格式:

jmap [option] <pid>

其中 pid 指的是进程id,进程id可以使用 ps -ef | grep java 来查看。
具体的option见下图(该图取自《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》周志明):
在这里插入图片描述

实践部分

1. 找到进程id

在我的电脑命令行输入

ps -ef | grep java

可以得到如下输出:

501 89473 88963   0 11:18上午 ??         0:00.19 /Users/jefferson/Library/Java/JavaVirtualMachines/corretto-1.8.0_342/Contents/Home/bin/java...中间信息省略.../Users/jefferson/IdeaProjects/test-only-java/out/production/test-only-java test.design.chainofresponsibility.Application

可以看到进程id是 89473。

2. 生成内存快照

输入如下命令

jmap -dump:live,format=b,file=/path-you-want-to-save/java-heap-dump.hprof  89473

这样我们就能在 /path-you-want-to-save 路径下生成 java-heap-dump.hprof 这个内存快照文件。

3. Java堆和方法区的详细信息、内存空间使用率、当前用的是哪种收集器

这三种信息都是通过一个命令就能实现的,输入如下命令:

jmap -heap 89473

注意,jdk9及其以上推荐使用是另一个命令即 jhsdb jmap --heap --pid <pid> 。

Attaching to process ID 6666, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.222-b10using thread-local object allocation.
Garbage-First (G1) GC with 4 thread(s)Heap Configuration:MinHeapFreeRatio         = 40MaxHeapFreeRatio         = 70MaxHeapSize              = 2147483648 (2048.0MB)NewSize                  = 1363144 (1.2999954223632812MB)MaxNewSize               = 1287651328 (1228.0MB)OldSize                  = 5452592 (5.1999969482421875MB)NewRatio                 = 2SurvivorRatio            = 8MetaspaceSize            = 134217728 (128.0MB)CompressedClassSpaceSize = 327155712 (312.0MB)MaxMetaspaceSize         = 335544320 (320.0MB)G1HeapRegionSize         = 1048576 (1.0MB)Heap Usage:
G1 Heap:regions  = 2048capacity = 2147483648 (2048.0MB)used     = 1490240896 (1421.2044677734375MB)free     = 657242752 (626.7955322265625MB)69.39474940299988% used
G1 Young Generation:
Eden Space:regions  = 578capacity = 1061158912 (1012.0MB)used     = 606076928 (578.0MB)free     = 455081984 (434.0MB)57.11462450592885% used
Survivor Space:regions  = 7capacity = 7340032 (7.0MB)used     = 7340032 (7.0MB)free     = 0 (0.0MB)100.0% used
G1 Old Generation:regions  = 866capacity = 1078984704 (1029.0MB)used     = 876823936 (836.2044677734375MB)free     = 202160768 (192.7955322265625MB)81.26379667380345% used31790 interned Strings occupying 3571440 bytes.

3.1 第 7行显示的是当前使用的G1的垃圾收集器,网上有一些讲解如何查看当前使用的垃圾收集器 ,有的回答说使用java -XX:+PrintCommandLineFlags -version,其实是不行的,比如这篇文章,
java -XX:+PrintCommandLineFlags -version 这种方式只能查看jdk默认的垃圾收集器,查看的不是当前使用的是哪个。
3.2 Java堆和方法区的详细信息可由第9行到第48行看出来,这个比较直观,不做解释了。
3.3 内存空间使用率可以从第29、36、42、48行分别得知总内存使用率、伊甸园区使用率、幸存区使用率和老年代使用率。


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

相关文章

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

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

Java的jmap命令使用详解

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

Python Numpy .npy文件打开

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

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

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

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

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

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

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

tecplot切面

注意要选择Volume Zone

面向切面

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

Spring AOP 之 多切面

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

spring切面注解失效

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

自定义切面类

直接贴入代码 &#xff0c;注释写的很清楚 此处为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、概述 在前面介绍各类增强时&#xff0c;大家可能没有注意到一个问题&#xff1a;增强被织入到目标类的所有方法…

Spring基础:切面

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

java使用spring aop切面编程

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

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

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

时间序列预测方法

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

时间序列预处理

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

时间序列分析相关概念

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

时间序列预测方法总结

前言 对时间序列数据预测模型做个简单的分类&#xff0c;方便日后对其进一步研究&#xff0c;理清楚技术更新发展方向。 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。 预测场景 单步预测 单步单变量预测 &#xff1a;在时间序…