jmap命令详解

jmap 用于生成 heap dump 文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现 OOM 的时候自动生成 dump 文件。

jmap 不仅可以生成 dump 文件,还可以查询finalize执行队列、Java 堆的详细信息,如当前使用率、当前使用的是哪种收集器等。

命令的使用格式如下。

jmap [option] LVMID

option 参数详解:

  • dump : 生成堆转储快照
  • finalizerinfo : 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
  • heap : 显示Java堆详细信息
  • histo : 显示堆中对象的统计信息
  • clstats : 显示类加载器信息
  • F : 当-dump没有响应时,强制生成dump快照
选项作用
-dump生成java堆转储快照,格式为dump:[live,]format=b,file=,其中live子参数指定是否只dump出存活对象。
-finalizerinfo显示在F-Queue中等待Finerlizer线程执行 finalize方法的对象,只在linux/Solaries平台下有效
-heap显示java堆详细信息,包括使用哪种垃圾收集器、参数配置、分代状况等,只在linux/Solaries平台下有效
-permstat以ClassLoader 为统计口径显示永久代内存状态,只在linux/Solaries平台下有效
-histo显示堆中对象统计信息,包括类、实例数量、合计容量
-F当虚拟机进程对 -dump 选项没有响应时,可使用这个选项强制生成dump快照,只在linux/Solaries平台下有效

option 参数使用如下。

1、示例参数:dump

-dump参数用于生成堆内存快照文件。

命令的使用格式如下。

-dump::live,format=b,file=<filename> pid

option 参数详解:

  • live : 指的是活着的对象
  • format : 表示指定的输出格式
  • file : 表示指定的文件名
  • pid : 表示 Java 服务进程ID

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jmap -dump:live,format=b,file=dump.hprof 20094
Dumping heap to /xxx/dump.hprof ...
Heap dump file created

dump.hprof这个后缀是为了后续可以直接用 MAT (Memory Anlysis Tool) 工具打开。

2、示例参数:finalizerinfo

-finalizerinfo参数用于打印等待回收对象的信息。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jmap -finalizerinfo 20094
Attaching to process ID 20094, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08
Number of objects pending for finalization: 0

从日志中可以得出,当前 F-QUEUE 队列中并没有等待 Finalizer 线程执行 finalizer 方法的对象。

3、示例参数:heap

-heap参数用于打印 heap 的概要信息,GC 使用的算法,heap 的配置及 wise heap 的使用情况,可以用此来判断内存目前的使用情况以及垃圾回收情况。

在操作系统终端输入如下命令,即可查看相关信息,示例如下。

$ jmap -heap 20094
Attaching to process ID 20094, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08using thread-local object allocation.
Mark Sweep Compact GCHeap Configuration:MinHeapFreeRatio         = 40MaxHeapFreeRatio         = 70MaxHeapSize              = 461373440 (440.0MB)NewSize                  = 9764864 (9.3125MB)MaxNewSize               = 153747456 (146.625MB)OldSize                  = 19595264 (18.6875MB)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 = 17825792 (17.0MB)used     = 239848 (0.22873687744140625MB)free     = 17585944 (16.771263122558594MB)1.345511043772978% used
Eden Space:capacity = 15859712 (15.125MB)used     = 239848 (0.22873687744140625MB)free     = 15619864 (14.896263122558594MB)1.5123099334969008% used
From Space:capacity = 1966080 (1.875MB)used     = 0 (0.0MB)free     = 1966080 (1.875MB)0.0% used
To Space:capacity = 1966080 (1.875MB)used     = 0 (0.0MB)free     = 1966080 (1.875MB)0.0% used
tenured generation:capacity = 39444480 (37.6171875MB)used     = 23665256 (22.568946838378906MB)free     = 15779224 (15.048240661621094MB)59.99636958073728% used21919 interned Strings occupying 2683112 bytes.

从日志中,可以很清楚的看到 Java 堆中各个区域目前的情况。

4、示例参数:histo

-histo参数用于打印堆的对象统计,包括对象数、内存大小等等。也可以带上live参数,比如-histo[:live]表示只打印存活的对象,如果不加就是查询全部对象。

在操作系统终端输入如下命令,即可查看相关信息,部分示例如下。

$ jmap -histo 20094num     #instances         #bytes  class name
----------------------------------------------1:         61030        8438336  [C2:          9918        2169120  [I3:         59981        1439544  java.lang.String4:          5112        1331136  [B5:         13532        1190816  java.lang.reflect.Method6:         10071        1125192  java.lang.Class7:         32196        1030272  java.util.concurrent.ConcurrentHashMap$Node8:          9593         572904  [Ljava.lang.Object;9:         15416         493312  java.util.HashMap$Node10:         12115         484600  java.util.LinkedHashMap$Entry...

其中class name列指的是对象类型,部分内容详解:

B:byte C:char D:double F:float I:int J:long Z:boolean [I:表示 int[]的数组 [L+类名:其他数组对象

5、示例参数:clstats

-clstats参数用于打印类加载器信息。

在操作系统终端输入如下命令,即可查看相关信息,部分示例如下。

$ jmap -clstats 20094
Attaching to process ID 20094, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08

表示当前并没有相关类加载的信息。

6、示例参数:F

-F参数表示强制模式。在 pid 没有响应的时候使用-dump或者-histo参数,在这个模式下live子参数会无效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/10667.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32的阿里云智能农业大棚

目录 前言&#xff1a; 项目效果演示&#xff1a; 一、简介 二、硬件需求准备 三、硬件框图 四、CubeMX配置 4.1、按键、蜂鸣器GPIO口配置 4.2、ADC输入配置 4.3、IIC——驱动OLED 4.4、DHT11温湿度读取 4.5、PWM配置——光照灯、水泵、风扇 4.6、串口——esp8266模…

【游戏设计原理】96 - 成就感

成就感是玩家体验的核心&#xff0c;它来自完成一件让自己满意的任务&#xff0c;而这种任务通常需要一定的努力和挑战。游戏设计师的目标是通过合理设计任务&#xff0c;不断为玩家提供成就感&#xff0c;保持他们的参与热情。 ARCS行为模式&#xff08;注意力、关联性、自信…

MySQL CTE:解锁SQL查询新模式

目录 一、CTE 初相识 二、CTE 基础语法 &#xff08;一&#xff09;基本语法结构 &#xff08;二&#xff09;语法规则详解 三、非递归 CTE 应用实例 &#xff08;一&#xff09;单 CTE 简单查询 &#xff08;二&#xff09;多 CTE 联合查询 四、递归 CTE 深入探索 &…

C#,入门教程(12)——数组及数组使用的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(11)——枚举&#xff08;Enum&#xff09;的基础知识和高级应用https://blog.csdn.net/beijinghorn/article/details/123917587https://blog.csdn.net/beijinghorn/article/details/123917587 数组是一种数据集合&#xff0c;是一组…

【leetcode练习·二叉树】计算完全二叉树的节点数

本文参考labuladong算法笔记[拓展&#xff1a;如何计算完全二叉树的节点数 | labuladong 的算法笔记] 如果让你数一下一棵普通二叉树有多少个节点&#xff0c;这很简单&#xff0c;只要在二叉树的遍历框架上加一点代码就行了。 但是&#xff0c;力扣第第 222 题「完全二叉树的…

低代码系统-产品架构案例介绍、轻流(九)

轻流低代码产品定位为零代码产品&#xff0c;试图通过搭建来降低企业成本&#xff0c;提升业务上线效率。 依旧是从下至上&#xff0c;从左至右的顺序 名词概述运维层底层系统运维层&#xff0c;例如上线、部署等基础服务体系内置的系统能力&#xff0c;发消息、组织和权限是必…

对顾客行为的数据分析:融入2+1链动模式、AI智能名片与S2B2C商城小程序的新视角

摘要&#xff1a;随着互联网技术的飞速发展&#xff0c;企业与顾客之间的交互方式变得日益多样化&#xff0c;移动设备、社交媒体、门店、电子商务网站等交互点应运而生。这些交互点不仅为顾客提供了便捷的服务体验&#xff0c;同时也为企业积累了大量的顾客行为数据。本文旨在…

MSA Transformer

过去的蛋白质语言模型以单个序列为输入&#xff0c;MSA Transformer以多序列比对的形式将一组序列作为输入。该模型将行和列注意力交织在输入序列中&#xff0c;并在许多蛋白质家族中使用mask语言建模目标进行训练。模型的性能远超过了当时最先进的无监督学习方法&#xff0c;其…

QT实现有限元软件操作界面

本系列文章致力于实现“手搓有限元&#xff0c;干翻Ansys的目标”&#xff0c;基本框架为前端显示使用QT实现交互&#xff0c;后端计算采用Visual Studio C。 本篇将二维矩形截面梁单元&#xff08;Rect_Beam2D2Node&#xff09;组成的钢结构桥作为案例来展示软件功能。 也可以…

推荐一款好用的翻译类浏览器扩展插件

给大家推荐一款实用的翻译工具——沉浸式翻译。这是一款免费、高效的AI驱动浏览器扩展插件&#xff0c;能够帮助用户轻松打破语言障碍&#xff0c;享受沉浸式的阅读体验。 主要特性 沉浸式阅读体验&#xff1a;通过智能识别网页主内容区域并进行双语对照翻译&#xff0c;让用户…

ElasticSearch-文档元数据乐观并发控制

文章目录 什么是文档&#xff1f;文档元数据文档的部分更新Update 乐观并发控制 最近日常工作开发过程中使用到了 ES&#xff0c;最近在检索资料的时候翻阅到了 ES 的官方文档&#xff0c;里面对 ES 的基础与案例进行了通俗易懂的解释&#xff0c;读下来也有不少收获&#xff0…

开源的瓷砖式图像板系统Pinry

简介 什么是 Pinry &#xff1f; Pinry 是一个开源的瓷砖式图像板系统&#xff0c;旨在帮助用户轻松保存、标记和分享图像、视频和网页。它提供了一种便于快速浏览的格式&#xff0c;适合喜欢整理和分享多种媒体内容的人。 主要特点 图像抓取和在线预览&#xff1a;支持从网页…

Java 大视界 -- Java 大数据在自动驾驶中的数据处理与决策支持(68)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

【数据结构】初识链表

顺序表的优缺点 缺点&#xff1a; 中间/头部的插入删除&#xff0c;时间复杂度效率较低&#xff0c;为O(N) 空间不够的时候需要扩容。 如果是异地扩容&#xff0c;增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间&#xff0c;会有不小的消耗。 扩容可能会存在…

I.MX6ULL 中断介绍上

i.MX6ULL是NXP&#xff08;原Freescale&#xff09;推出的一款基于ARM Cortex-A7内核的微处理器&#xff0c;广泛应用于嵌入式系统。在i.MX6ULL中&#xff0c;中断&#xff08;Interrupt&#xff09;是一种重要的机制&#xff0c;用于处理外部或内部事件&#xff0c;允许微处理…

4-图像梯度计算

文章目录 4.图像梯度计算(1)Sobel算子(2)梯度计算方法(3)Scharr与Laplacian算子4.图像梯度计算 (1)Sobel算子 图像梯度-Sobel算子 Sobel算子是一种经典的图像边缘检测算子,广泛应用于图像处理和计算机视觉领域。以下是关于Sobel算子的详细介绍: 基本原理 Sobel算子…

苍穹外卖——数据统计

在商家管理端的左侧&#xff0c;有一个名为"数据统计"的菜单&#xff0c;该页面负责展示各个维度的数据统计&#xff0c;分别是营业额统计、用户统计、订单统计、销量排名top10。统计的数据是借助一些图形化的报表技术来生成并展示的。在左上角还可选择时间段&#x…

优盘恢复原始容量工具

买到一个优盘&#xff0c;显示32mb&#xff0c;我见过扩容盘&#xff0c;但是这次见到的是缩容盘&#xff0c;把2g的容量缩成32MB了&#xff0c;首次见到。。用芯片查询工具显示如下 ChipsBank(芯邦) CBM2199E 使用以下工具&#xff0c;恢复原始容量。。 其他CMB工具可能不行…

Flutter Candies 一桶天下

| | | | | | | | 入魔的冬瓜 最近刚入桶的兄弟&#xff0c;有责任心的开发者&#xff0c;对自己的项目会不断进行优化&#xff0c;达到最完美的状态 自定义日历组件 主要功能 支持公历&#xff0c;农历&#xff0c;节气&#xff0c;传统节日&#xff0c;常用节假日 …

[Collection与数据结构] B树与B+树

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…