花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述JVM升级篇八(工具篇)相关的知识,希望能为你提供帮助。
@[TOC]
1. JDK 内置命令行工具
1.1、jps/jinfojps ->
显示进程号
jps -mlv->
把所有的运行的参数运行出来
jinfo在mac有bug
解决办法:升级成jdk8以上
1.2、jstatjstat -options
-class 类加载(Class loader)信息统计
-compiler JIT 即时编译器相关的统计信息
-gc GC 相关的堆内存信息。 用法: jstat -gc -h 10 -t 864 1s 20
-gccapacity 各个内存池分代空间的容量
-gccause 看上次 GC,本次 GC(如果正在 GC 中)的原因, 其他输出和 -gcutil 选项一致
-gcnew 年轻代的统计信息。(New = Young = Eden + S0 + S1) -gcnewcapacity 年轻代空间大小统
计
-gcold 老年代和元数据区的行为统计
-gcoldcapacity old 空间大小统计
-gcmetacapacity meta 区大小统计
-gcutil GC 相关区域的使用率(utilization)统计
-printcompilation 打印 JVM 编译统计信息详细 jstat -gc pid 10 10
解释:
概率统计jstat -gcutil pid 10 10
解释:
1.3、jmap-heap 打印堆内存(/内存池)的配置和使用信息。
-histo 看哪些类占用的空间最多, 直方图。
-dump:format=b,file=xxxx.hprofDump 堆内存。
使用
jmap -heap pid
jmap -histo pid
jmap -dump:format=b,file=3826.hprof
1.4、jstack== kill -3-F 强制执行 thread dump,可在 java 进程卡死(hung 住)时使用,此选项可能需要系统权限。
-m 混合模式(mixed mode),将 Java 帧和native 帧一起输出,此选项可能需要系统权限。
-l 长列表模式,将线程相关的 locks 信息一起输出,比如持有的锁,等待的锁。
1.5、jcmd*示例:
jcmd pid VM.version
jcmd pid VM.flags
jcmd pid VM.command_line
jcmd pid VM.system_properties
jcmd pid Thread.print
jcmd pid GC.class_histogram
jcmd pid GC.heap_info
使用:
1.6、jrunscript/jjs当 curl 命令用: jrunscript -e "cat(??http://www.baidu.com)"??")
执行 js 脚本片段 jrunscript -e "print(hello,kk.jvm+1)"
执行 js 文件 jrunscript -l js -f /XXX/XXX/test.js
2、内置图形化工具2.1、jconsole共有 6 个面板第一个为概览,四项指标具体为:
况,从图上可以看到,堆内存使用了 94MB 左右,并且一直在增长。
到 3%,初步判断系统当前并没有什么负载和压力。 有如下几个时间维度可供选择:
1分钟、5分钟、10分钟、30分钟、1小时、2小时、3小时、6小时、12小时、1
天、7天、1个月、3个月、6个月、1年、全部,一共是16档。
当我们想关注最近1小时或者1分钟的数据,就可以选择对应的档。旁边的3个标
签页(内存、线程、类),也都支持选择时间范围。
内存图表包括:
类监控面板,可以直接看到 JVM 加载和卸载的
类数量汇总信息,以及随着时间的动态变化。
VM 概要的数据有五个部分:
总信息;
2.2、jvisualvm
2.3、jmc【JVM升级篇八(工具篇)】飞行记录
推荐阅读
- 9DNS主从和iptables使用
- 更便捷的Mybatis插件——EasyMybatis
- Linux 脚本初步等练习
- oeasy教您玩转vim - 84 - #命令command
- 设计模式-- 外观模式(没那么高大上)
- 如何实现vSphere Replication 负载均衡
- 在页面模板中按类别获取自定义帖子类型
- 用php文件生成css文件
- 通过CSS/jQuery生成WordPress粘性页脚