JVM调优工具详解-jps、jmap、jstat、jstack

jps

用于查看相关java线程的相关信息

 

选项作用
-q仅显示进程 ID,而不显示类名或 JAR 文件的路径
-m显示传递给主类的参数
-l显示完整的主类名或 JAR 文件的路径
-v显示传递给 Java 虚拟机的参数

jmap

此命令用来查看内存信息,实例个数以及占内存大小

jmap -help
Usage:jmap [option] <pid>(to connect to running process)jmap [option] <executable <core>(to connect to a core file)jmap [option] [server_id@]<remote server IP or hostname>(to connect to remote debug server)where <option> is one of:<none>               to print same info as Solaris pmap-heap                to print java heap summary-histo[:live]        to print histogram of java object heap; if the "live"suboption is specified, only count live objects-clstats             to print class loader statistics-finalizerinfo       to print information on objects awaiting finalization-dump:<dump-options> to dump java heap in hprof binary formatdump-options:live         dump only live objects; if not specified,all objects in the heap are dumped.format=b     binary formatfile=<file>  dump heap to <file>Example: jmap -dump:live,format=b,file=heap.bin <pid>-F                   force. Use with -dump:<dump-options> <pid> or -histoto force a heap dump or histogram when <pid> does notrespond. The "live" suboption is not supportedin this mode.-h | -help           to print this help message-J<flag>             to pass <flag> directly to the runtime system
选项作用
-dump生成java堆转储快照,格式为:-dump:[live,]format=b,file=,其中live子参数说明是否只dump出存活对象
-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在linux/solaris平台下有效
-heap显示堆详细信息,如使用哪种回收期、参数配置、分带状况等,只在linux/solaris平台下有效
-histo显示堆中对象统计信息,包括类、实例数量和合计容量
-permstat以ClassLoader为统计口径显示永久代内存状况,只在linux/solaris平台下有效
-F当虚拟机进程对-dump选项没有响应时,可以使用这个选项强制生成dump快照,只在linux/solaris平台下有效

        jmap -histo pid 

  • num:序号
  • instances:实例数量
  • bytes:占用空间大小
  • class name:类名称,[C is a char[]],[S is a short[],[l is a byte[],[[l is a int[]] 

堆信息 

PS C:\Users\dzend> jmap -heap 5232
Attaching to process ID 5232, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.302-b08using thread-local object allocation.
Parallel GC with 15 thread(s)Heap Configuration:MinHeapFreeRatio         = 0MaxHeapFreeRatio         = 100MaxHeapSize              = 12813598720 (12220.0MB)NewSize                  = 266862592 (254.5MB)MaxNewSize               = 4270850048 (4073.0MB)OldSize                  = 534249472 (509.5MB)NewRatio                 = 2SurvivorRatio            = 8MetaspaceSize            = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:
PS Young Generation
Eden Space:capacity = 799539200 (762.5MB)used     = 645325032 (615.4299087524414MB)free     = 154214168 (147.0700912475586MB)80.71211918064806% used
From Space:capacity = 11010048 (10.5MB)used     = 10874280 (10.370521545410156MB)free     = 135768 (0.12947845458984375MB)98.76687186104911% used
To Space:capacity = 17825792 (17.0MB)used     = 0 (0.0MB)free     = 17825792 (17.0MB)0.0% used
PS Old Generationcapacity = 434634752 (414.5MB)used     = 22839560 (21.78150177001953MB)free     = 411795192 (392.71849822998047MB)5.254885831126545% used

堆内存dump

PS C:\Users\dzend> jmap -dump:format=b,file=eureka.hprof 5232
Dumping heap to C:\Users\dzend\eureka.hprof ...
Heap dump file created

在jvm参数也可以设置

  • -XX:+HeapDumpOnOutOfMemoryError
  • -XX:HeapDumpPath=./ (路径)

jstat

jstat是java虚拟机统计的信息工具,利用JVM内建的指令对Java应用程序的资源和怀能进行实时的命令的监控。

jmap -help
Usage:jmap [option] <pid>(to connect to running process)jmap [option] <executable <core>(to connect to a core file)jmap [option] [server_id@]<remote server IP or hostname>(to connect to remote debug server)where <option> is one of:<none>               to print same info as Solaris pmap-heap                to print java heap summary-histo[:live]        to print histogram of java object heap; if the "live"suboption is specified, only count live objects-clstats             to print class loader statistics-finalizerinfo       to print information on objects awaiting finalization-dump:<dump-options> to dump java heap in hprof binary formatdump-options:live         dump only live objects; if not specified,all objects in the heap are dumped.format=b     binary formatfile=<file>  dump heap to <file>Example: jmap -dump:live,format=b,file=heap.bin <pid>-F                   force. Use with -dump:<dump-options> <pid> or -histoto force a heap dump or histogram when <pid> does notrespond. The "live" suboption is not supportedin this mode.-h | -help           to print this help message-J<flag>             to pass <flag> directly to the runtime systemC:\Users\dzend>jstat -help
Usage: jstat -help|-optionsjstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]Definitions:<option>      An option reported by the -options option<vmid>        Virtual Machine Identifier. A vmid takes the following form:<lvmid>[@<hostname>[:<port>]]Where <lvmid> is the local vm identifier for the targetJava virtual machine, typically a process id; <hostname> isthe name of the host running the target Java virtual machine;and <port> is the port number for the rmiregistry on thetarget host. See the jvmstat documentation for a more completedescription of the Virtual Machine Identifier.<lines>       Number of samples between header lines.<interval>    Sampling interval. The following forms are allowed:<n>["ms"|"s"]Where <n> is an integer and the suffix specifies the units asmilliseconds("ms") or seconds("s"). The default units are "ms".<count>       Number of samples to take before terminating.-J<flag>      Pass <flag> directly to the runtime system.
选项作用
-t可以在打印的列上加上Timestamp列,用于显示系统运行的时间
-h可以在周期性数据的时候,可以在指定输出多少以后输出一次表示
vmidVirtual Machine ID(进程的pid)
interval执行每次的间隔时间,单位为毫秒
count用于指定输出多少次记录,缺省则会一直打印

垃圾回收统计

jstat -gc pid可以用来分析GC压力整体情况 

  • S0C:第一个幸存区的大小,单位KB
  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小 
  • S1U:第二个幸存区的使用大小
  • EC:eden区的大小
  • EU:eden的使用大小 
  • OC:老年代大小
  • OU:老年代使用大小
  • MC:方法区大小(元空间)
  • MU:方法区使用大小
  • CCSC:压缩类大小
  • CCSU:压缩类使用大小
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间,单位s
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间,单位s
  • GCT:垃圾回收消耗时间,单位s 

堆内存统计

 

  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:当前新生代容量
  • S0C:第一个幸存区大小
  • S1C:第二个幸存区的大小
  • EC:伊甸园区的大小
  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:当前老年代大小
  • OC:当前老年代大小
  • MCMN:最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC:年轻代gc次数
  • FGC:老年代GC次数

新生代垃圾回收统计

 

 

  •  S0C:第一个幸存区的大小
  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小
  • S1U:第二个幸存区的使用大小
  • TT:对象在新生代存活的次数
  • MTT:对象在新生代存活的最大次数
  • DSS:期望的幸存区大小
  • EC:伊甸园区的大小
  • EU:伊甸园区的使用大小
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间

新生代内存统计 

 

 

  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:当前新生代容量
  • S0CMX:最大幸存1区大小
  • S0C:当前幸存1区大小
  • S1CMX:最大幸存2区大小
  • S1C:当前幸存2区大小
  • ECMX:最大伊甸园区大小
  • EC:当前伊甸园区大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代回收次数

 老年代垃圾回收统计

  •  MC:方法区大小
  • MU:方法区使用大小
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

老年代内存统计

  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:当前老年代大小
  • OC:老年代大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

元数据空间统计

  •  MCMN:最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

元数据空间内存统计

  • S0:幸存1区当前使用比例
  • S1:幸存2区当前使用比例
  • E:伊甸园区使用比例
  • O:老年代使用比例
  • M:元数据区使用比例
  • CCS:压缩使用比例
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

jstack

用于诊断线程死锁问题。

jstack -help
Usage:jstack [-l] <pid>(to connect to running process)jstack -F [-m] [-l] <pid>(to connect to a hung process)jstack [-m] [-l] <executable> <core>(to connect to a core file)jstack [-m] [-l] [server_id@]<remote server IP or hostname>(to connect to a remote debug server)Options:-F  to force a thread dump. Use when jstack <pid> does not respond (process is hung)-m  to print both java and native frames (mixed mode)-l  long listing. Prints additional information about locks-h or -help to print this help message
选项作用
-F当正常输出的请求不被响应时,强制输出线程堆栈
-m    如果调用到本方法的话,可以显示c/c++的堆栈
-i除堆栈外,显示关于锁的附加信息,在发生死锁时可以用jstatic -l pid来观察锁持有情况

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

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

相关文章

IT技术人员必看:什么是业务?何为业务架构?

在技术型的组织里&#xff0c;好多Leader能脱颖而出&#xff0c;除了得有扎实的技术底子&#xff0c;对业务的熟悉和理解也相当重要。尤其在像阿里那样的公司&#xff0c;P7以上的技术人员要想升职&#xff0c;深度理解业务就特别关键。而且&#xff0c;级别越高&#xff0c;对…

Vue3+Ant Design表格排序

最近在公司做有关报表的项目时&#xff0c;遇到最多的问题-表格排序&#xff0c;刚开始看到UI设计图的时候&#xff0c;还有些纳闷这个排序如何做&#xff0c;其实实际上并没有想象中的那么难&#xff0c;如果说单纯的排序的话ant design这个组件里的表格有自带的排序和筛选功能…

ocr截图识别的软件有吗?分享6款!

随着科技的发展&#xff0c;我们越来越多地依赖于数字技术和智能工具来处理日常任务。OCR技术就是其中的佼佼者&#xff0c;它能够将图片中的文字快速、准确地转换成可编辑的文本格式。OCR截图识别软件就是这一技术的典型应用&#xff0c;它们能够帮助我们轻松地从截图中提取文…

阿里云服务器带宽价格全解析,附报价单

阿里云服务器公网带宽怎么收费&#xff1f;北京地域服务器按固定带宽计费一个月23元/M&#xff0c;按使用流量计费0.8元/GB&#xff0c;云服务器地域不同实际带宽价格也不同&#xff0c;阿里云服务器网aliyunfuwuqi.com分享不同带宽计费模式下带宽收费价格表&#xff1a; 公网…

【C语言】双向链表详解

文章目录 关于双向链表双向链表的初始化双向链表的打印双向链表方法调用 - 尾删为例双向链表的查找 - 指定位置之后插入为例双向链表结束 - 链表的销毁小结及整体代码实现 关于双向链表 首先链表有8种基本分法 其中在笔者之前文章种详细介绍的 单链表 是不带头单项不循环链表…

C++学习知识

C知识小菜单&#xff1a; 备赛蓝桥杯过程中的一些小知识积累&#xff0c;持续更新中&#xff01; 文章目录 C知识小菜单&#xff1a;1.小数取整&#xff1a;2.小数点后保留几位&#xff1a;3.数字占几位字符&#xff1a;4. 求x 的 y 次幂&#xff08;次方&#xff09;5. 求平方…

STM32完成软件I2C通讯

今天的重点是利用STM32的软件方案和MPU60506轴姿态传感器建立通讯&#xff0c;今天只完成了简单的发送地址和接收应答的部分&#xff0c;特此记录一下过程&#xff0c;以后忘记可以随时翻出来看看。 先介绍最基本的I2C通讯的最基本的6个时序&#xff1a; 一&#xff1a;起始条…

TCP/IP协议—UDP

TCP/IP协议—UDP UDP协议UDP通信特点 UDP头部报文UDP检验 UDP协议 用户数据传输协议 (UDP&#xff0c;User Datagram Protocol) 是一种无连接的协议&#xff0c;提供了简单的数据传输服务&#xff0c;不保证数据的顺序以及完整性。应用层很多通信协议都基于UDP进行传输&#x…

未佩戴厨师帽识别检测 厨房管理系统 自动监测未佩戴厨师帽行为 实时报警

在厨房环境中&#xff0c;佩戴厨师帽对于食品安全和卫生至关重要。厨师帽能够有效地防止头发、皮屑等杂质掉入食物中&#xff0c;减少了食品受到污染的可能性&#xff0c;从而保障了食品安全。特别是在学校、餐厅等场景中&#xff0c;对于未佩戴厨师帽的检测更是必不可少。相关…

深入理解Linux系统中的前后台任务与守护进程

⭐小白苦学IT的博客主页 ⭐初学者必看&#xff1a;Linux操作系统入门 ⭐代码仓库&#xff1a;Linux代码仓库 ❤关注我一起讨论和学习Linux系统 1.前言 在Linux系统中&#xff0c;进程管理是至关重要的一个环节。其中&#xff0c;前后台任务和守护进程是进程管理中不可忽视的两…

Vue结合el-table实现合并单元格(以及高亮单元表头和指定行)

实现效果如下&#xff1a; 思路&#xff1a; 1.首先使用动态表头表格。 2.其次实现动态计算合并单元格。&#xff08;计算规则 传递需要合并的字段&#xff09; 3.然后封装公共的计算单元格方法 export导出供多个页面使用。 4.同时需要封装成公共的组件供多个页面使用。 5…

电动车新国标迎来修订机会,用户的真实需求能被满足吗?

文&#xff5c;新熔财经 作者&#xff5c;宏一 自2019年4月《电动自行车安全技术规范》发布至今&#xff0c;电动车的新国标标准已经实施5年&#xff0c;市场上的争议也此起彼伏地持续了5年。 因为新国标对电动车的各项技术标准提出的明确要求&#xff0c;其中&#xff0c;最…

Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066

很奇怪的问题,在使用nifi的时候碰到的,这里是用NIFI,把数据从postgresql中同步到mysql中, 首先postgresql中的源表,中是没有create_time这个字段的,但是同步的过程中报错了. 报错的内容是说,目标表中有个create_time字段,这个字段是必填的,但是传过来的flowfile文件中,的数据没…

[RK3399 Linux] 使用ubuntu 20.04.5制作rootfs

一、ubuntu base ubuntu base是用于为特定需求创建自定义映像的最小rootfs,是ubuntu可以运行的最小环境。 1.1 下载源码 下载ubuntu-base的方式有很多,可以从官方的地址:ttp://cdimage.ubuntu.com/ubuntu-base/releases。 也可以其它镜像地址下载,如清华源:https://mi…

使用shell管理和配置网络服务_1

1、请使用nmcli命令配置仅主机模式网络环境&#xff0c;要求如下: 1) 创建一个新的网卡连接eth1&#xff0c;该连接映射到ens32网卡上; 首先&#xff0c;确保 ens32 网卡没有被其他网络配置文件使用。然后&#xff0c;使用 nmcli 创建一个新的连接&#xff0c;并将其绑定到 e…

在Linux中使用dpkg -i离线安装下载的deb软件包

“dpkg -i” 是 Debian 系统中用于安装 .deb 格式软件包的命令。它是 Debian Package Management System&#xff08;DPMS&#xff09;的一部分&#xff0c;允许用户通过命令行界面来管理软件包。 使用该命令时&#xff0c;需要提供要安装的软件包的路径作为参数。例如&#…

实战纪实 | 编辑器漏洞之Ueditor-任意文件上传漏洞 (老洞新谈)

UEditor 任意文件上传漏洞 前言 前段时间在做某政府单位的项目的时候发现存在该漏洞&#xff0c;虽然是一个老洞&#xff0c;但这也是容易被忽视&#xff0c;且能快速拿到shell的漏洞&#xff0c;在利用方式上有一些不一样的心得&#xff0c;希望能帮助到一些还不太了解的小伙…

大模型日报|今日必读的9篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Google DeepMind 提出 RecurrentGemma&#xff1a;超越 Transformer&#xff0c;迈向高效开放语言模型 Google DeepMind 团队提出了 RecurrentGemma&#xff0c;一个使用 Google 新颖的 Griffin 架构的开放语言模型…

PHP01——php快速入门 之 使用phpstudy快速搭建PHP环境

PHP01——php快速入门 之 使用phpstudy快速搭建PHP环境 0. 前言1. 下载小皮面板1.1 下载phpstudy&#xff08;小皮面板&#xff09;1.2 启动、简单访问1.2.1 启动Apache1.2.2 访问1.2.3 访问自定义文件或页面 2. 创建网站2.1 创建网站2.2 可能遇到的问题2.2.1 hosts权限问题&am…

【新版HI3559AV100开发注意事项(四)】

新版HI3559AV100开发注意事项&#xff08;四&#xff09; 三十、HI3559A参数中对输入分辨率限制的原因是&#xff1f; 答&#xff1a;分辨率限制有两个来源&#xff1a; 一个是时钟频率最高为600M&#xff0c;开启一拍两像素之后相当于1200M。你这个数据量太大了&#xff0c;6…