JVM工具使用(jstat + jmap)

命令格式

jstat -gcutil pid interval(ms)

举例:

jstat -gcutil  16361 1000

线上服务器的GC情况如下:

参数说明如下:

  • S0: 新生代中Survivor space 0区已使用空间的百分比
  • S1: 新生代中Survivor space 1区已使用空间的百分比
  • E: 新生代已使用空间的百分比
  • O: 老年代已使用空间的百分比
  • P: 永久带已使用空间的百分比

  • YGC: 从应用程序启动到当前,发生Yang GC 的次数
  • YGCT: 从应用程序启动到当前,Yang GC所用的时间【单位秒】
  • FGC: 从应用程序启动到当前,发生Full GC的次数
  • FGCT: 从应用程序启动到当前,Full GC所用的时间
  • GCT: 从应用程序启动到当前,用于垃圾回收的总时间【单位秒】

参考:


jmap

jmap命令是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。

命令格式

jamp -heap pid:查看java堆使用情况

jmap -histo pid:查看堆内存中的对象数量,大小

jmap -finalizerinfo pid:打印正在等候回收的对象信息

jmap -heap 15结果
Attaching to process ID 15, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.262-b10using parallel threads in the new generation.  ##新生代采用的是并行线程处理方式
using thread-local object allocation.
Concurrent Mark-Sweep GC  ##同步并行垃圾回收Heap Configuration:  ##堆配置情况,也就是JVM参数配置的结果[平常说的tomcat配置JVM参数,就是在配置这些]MinHeapFreeRatio         = 40  ##最小堆使用比例MaxHeapFreeRatio         = 70  ##最大堆可用比例MaxHeapSize              = 536870912 (512.0MB)  ##最大堆空间大小NewSize                  = 268435456 (256.0MB)  ##新生代分配大小MaxNewSize               = 268435456 (256.0MB)  ##最大可新生代分配大小OldSize                  = 268435456 (256.0MB)  ##老年代大小NewRatio                 = 2  ##新生代比例SurvivorRatio            = 8  ##新生代与suvivor的比例MetaspaceSize            = 21807104 (20.796875MB)  ##元空间大小 元空间本质跟永久代类似,元空间与永久代最大的区别在于:元空间并不在虚拟机中,而是使用本机内存,因此,元空间大小仅受本地内存限制CompressedClassSpaceSize = 1073741824 (1024.0MB)  MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:  ##堆使用情况【堆内存实际的使用情况】
New Generation (Eden + 1 Survivor Space):  ##新生代(伊甸区Eden区 + 幸存区survior(1+2)空间)capacity = 241631232 (230.4375MB)  ##伊甸区容量used     = 191127136 (182.27304077148438MB)  ##已经使用大小free     = 50504096 (48.164459228515625MB)  ##剩余容量79.09868869931516% used  ##使用比例
Eden Space:  ##伊甸区capacity = 214827008 (204.875MB)used     = 170204912 (162.32005310058594MB)free     = 44622096 (42.55494689941406MB)79.22882396611882% used
From Space:  ##survior1区capacity = 26804224 (25.5625MB)used     = 20922224 (19.952987670898438MB)free     = 5882000 (5.6095123291015625MB)78.05569749006723% used
To Space:  ##survior2 区capacity = 26804224 (25.5625MB)used     = 0 (0.0MB)free     = 26804224 (25.5625MB)0.0% used
concurrent mark-sweep generation:  ##老年代使用情况capacity = 268435456 (256.0MB)used     = 146936152 (140.12923431396484MB)free     = 121499304 (115.87076568603516MB)54.73798215389252% used36399 interned Strings occupying 4146712 bytes.

histo的参数说明:instances(实例数)、bytes(大小)、classs name(类名)。它基本是按照使用使用大小逆序排列的

jmap -histo:live 15num     #instances         #bytes  class name
----------------------------------------------1:         11717       55996520  [Ljava.util.HashMap$Node;2:        142072       17500168  [C3:         20197       16779088  [B4:        141493        3395832  java.lang.String5:        104965        3358880  java.util.concurrent.ConcurrentHashMap$Node6:         50269        2495760  [Ljava.lang.Object;7:         51898        2491104  java.util.HashMap8:         20599        2270160  java.lang.Class9:         24224        2131712  java.lang.reflect.Method10:         12309        1717872  [I11:         52769        1266456  java.util.ArrayList12:         29598        1183920  java.util.LinkedHashMap$Entry13:           434         987264  [Ljava.util.concurrent.ConcurrentHashMap$Node;14:         51193         819088  java.lang.Object
...
Total       1189759      129611872
#instance 是对象的实例个数 
#bytes 是总占用的字节数 
#class name 对应的就是 Class 文件里的 class 的标识 
B 代表 byte
C 代表 char
D 代表 double
F 代表 float
I 代表 int
J 代表 long
Z 代表 boolean
前边有 [ 代表数组, [I 就相当于 int[]
对象用 [L+ 类名表示

注意:

(1)jmap -histo命令 只知道某个class name占用了那么大的内存,但不知道由什么对象创建的。下一步需要将其他dump出来,使用内存分析工具进一步明确它是由谁引用的、由什么对象。

(2)jmap -histo:live 这个命令执行,JVM会先触发gc,然后再统计信息

  • -F 强迫.在pid没有响应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.
  • -h | -help 打印辅助信息
  • -J 传递参数给jmap启动的jvm.

参考:

【JVM】jmap命令详解_jvm jmap_多么温暖的阳光啊的博客-CSDN博客

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

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

相关文章

查看当前cmake版本支持哪些版本的Visual Studio

不同版本的的cmake对Visual Studio的版本支持不同,以下图示展示了如何查看当前安装的cmake支持哪些版本的Visual Studio。 1.打开cmake-gui 2.查看cmake支持哪些版本的Visual Studio

php使用sqlServer

sqlServer扩展 PDO_MSSQL|sqlsrv|odbc}mssql|pdo_odbc PHP 安装php_sqlsrv php_pdo_sqlsrv https://pecl.php.net/package/sqlsrv/5.8.1/windows PECL :: Package :: pdo_sqlsrv 5.8.1 for Windows SqlServer驱动:msodbcsql

Unity读取写入Excel

1.在Plugins中放入dll,118开头的dll在Unity安装目录下(C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity) 2.写Excel public void WriteExcel(){//文件地址FileInfo newFile new FileInfo(Application.dataPath "/test.xlsx…

无障碍阅读他人开源项目结构:看完本文,你将信心满满

先看看阿里是怎么约定的 我印象中,以前在看《阿里巴巴Java开发手册》时,好像有关于工程结构和应用分层相关的内容,于是我回翻了一下,果然有: 它这里面讲的内容大概就是:关于一个正常的企业项目里一种通用的…

一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版

Guitar Pro 8 .1.1for Mac 中文破解版是一款功能强大的音乐曲谱软件,非常适合学习如何玩,改进技巧,重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作,它包含了几乎所有的吉他现有指法及音色,在做弹拨…

黄金现货操作与盈亏

现在作黄金现货买卖,投资者已经完全以电子化的方式来进行,国内和香港的投资者,通过香港的正规平台入市,可以获得50倍的资金杠杆,以及全天候交易的机会,只要掌握了一些基本的操作方式,所有投资者…

buuctf[极客大挑战 2019]Havefun 1

网页环境title标题每一帧都不要放过&#xff0c;或许那个不起眼的地方就存在重要信息到这并未发现什么重要信息&#xff0c;F12看看在源代码底部发现PHP代码&#xff1a; <!-- $cat$_GET[cat]; echo $cat; if($catdog){ echo Syc{cat_cat_cat_cat}; } --> PHP代码…

性能优化总纲

本文仅论述优化的手段&#xff0c;不涉及执行这些操作的根因&#xff0c;后续空闲时在整理“为什么”。 一、性能指标 指标有很多&#xff0c;比如 lighthouse 中使用的指标有 FCP、LCP、TBT、CLS、Speed Index&#xff0c;这些是最终的性能评估指标。 性能优化方案落地时&a…

3D测量之圆孔测量 拟合圆 点云变换

0. 效果展示 1. 圆孔测量介绍 此文中的圆孔测量是一项3D视觉技术,旨在精确测量物体表面上的圆孔的直径和中心坐标。通过使用高精度3D相机(线激光轮廓仪或结构体等)采集原始点云数据,通过3D视觉算法能够快速、准确地分析物体上的圆孔特征,为制造和工程领域提供了强大的测量…

AI学习路线

目前跟B站刘二大人老师学到了CNN&#xff0c;对深度学习有了一定的了解和认识&#xff0c;但是还不够深入&#xff0c;之前直接上李沐老师的视频太顶了555&#xff0c;不过自己基础确实不太行(╥╯^╰╥) 在B站看到了一位up分享的学习路线&#xff0c;感觉很好&#xff01; 分…

Android-Framework 禁止状态栏下拉

一、环境 高通865 Android 10 二、使用情景 在Launcher 桌面以及应用内&#xff0c;禁止状态栏下拉 三、代码实现 1、应用内禁止状态栏下拉 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java -230,8 230,10 public…

系列二、Spring IOC

一、什么是IOC&#xff1f;有什么作用&#xff1f;优点是什么&#xff1f; IOC是控制反转的意思&#xff0c;即将创建对象的控制权交给了Spring的IOC&#xff0c;以前是由程序员自己去创建控制对象&#xff0c;现在交由Spring的IOC去创建控制&#xff0c;如果要去使用对象&…

VUE 集成 Mockjs

一、集成方式 在项目目录中执行以下命令&#xff1a; npm i -D mockjs二、配置 &#xff08;1&#xff09;在项目src目录下创建mock目录&#xff0c;并创建index.js文件&#xff0c;在index.js文件中添加以下代码&#xff1a; import Mock from mockjs// 配置需要mock的url…

STM32+摁键与定时器实现Led灯控制(中断)

中断作为单片机开发必须掌握的内容&#xff0c;它能够在不搭载操作系统的情况下让我们体验多任务处理的快感&#xff0c;保证了高优先级任务的实时性&#xff0c;同时系统中断也能够提供给用户在核心发生错误之后进行处理的机会。STM32F103系列单片机中断非常强大&#xff0c;每…

GaussDB数据库管理系统介绍

1.GaussDB的发展 2.GaussDB的生态 内部&#xff1a; 云化自动化方案。通过数据库运行基础设施的云化将DBA(数据库管理员)和运维人员的日常工作 自动化。外部&#xff1a; 采用与数据库周边生态伙伴对接与认证的生态连接融合方案&#xff0c;解决开发者/DBA难获取、应用难对接等…

[linux] 怎么批量kill掉挂载运行python 某个.py文件的端口

kill $(ps aux | grep python tools/token_raw_data_for_dsw.py | grep -v grep | awk {print $2}) 使用一系列的命令来查找并终止正在运行的名为"python main.py"的进程。 具体的步骤如下&#xff1a; ps aux命令用于列出当前正在运行的所有进程。grep python ma…

VR虚拟展厅的亮点是什么?有哪些应用?

传统展厅主要是以静态陈列的形式来传达内容&#xff0c;而展示形式则有图片、视频等&#xff0c;虽然视频包含内容多&#xff0c;但是总体具有一定的局限性&#xff0c;客户体验感也较差&#xff0c;往往不能深入了解细节。随着VR技术越来越成熟&#xff0c;VR技术的广泛应用&a…

PHP基础学习

PHP是什么&#xff1f; PHP&#xff08;全称&#xff1a;PHP&#xff1a;Hypertext Preprocessor&#xff0c;即"PHP&#xff1a;超文本预处理器"&#xff09;是一种通用开源脚本语言。PHP 脚本在服务器上执行。PHP 可免费下载使用。 基础的PHP语法 PHP 脚本可以放…

【谢希尔 计算机网络】第4章 网络层

目录 网络层 网络层的几个重要概念 网络层提供的两种服务 网络层的两个层面 网际协议 IP 虚拟互连网络 IP 地址 IP 地址与 MAC 地址 地址解析协议 ARP IP 数据报的格式 IP 层转发分组的过程 基于终点的转发 最长前缀匹配 使用二叉线索查找转发 网际控制报文协议…

2023年中国互联网视听平台发展趋势分析:未来增速将从2023年开始缓慢提升[图]

互联网视听平台是指基于互联网技术&#xff0c;提供包括音频、影视、综艺节目、直播、短视频等内容的数字化传播平台。互联网视听平台通过电脑端、移动端等多种终端提供在线点播、直播、互动等服务&#xff0c;具有内容丰富、便捷高效、交互性强等特点&#xff0c;是大众获取娱…