这些命令行工具大多数是lib\tools.jar类库的一层薄包装而已,他们主要的功能代码是在tools类库中实现的。
tools.jar中的类库不属于Java的标准API,如果引入这个类库,就意味着你的程序只能运行在Sun Hotspot(或一些从Sun买了JDK源码License的虚拟机,如IBM J9、BEAJRockit)上面,或者在部署程序时需要一起部署tools.jar。
Sun JDK监控和故障处理工具:
jps
JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。
jstat
JVM Statistics Monitoring Tool,用户手机HotSpot虚拟机各方面的运行数据
jps:虚拟机进程状况工具
-q
只输出LVMID,省略主类的名称
-m
输出虚拟机进程启动时传递给主类main()函数的参数
-l
输出主类的全名,如果进程执行的是Jar包,输出Jar路径
-v
输出虚拟机进程启动JVM参数
jstat:虚拟机统计信息监视工具
可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
命令格式 jstat [option vmid [interval[s|ms] [count]]]
如果是远程虚拟机进程 那么VMID格式:[protocol:][//]lvmid[@hostname[:port]/servername]
参数interval和count代表查询间隔和次数,如果省略了这两个参数,说明只查询一次。
假如需要每250毫秒查询一次进程2764垃圾收集的状况,一共查询20次:
jstat -gc 2764 250 20
选项option代表着用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集和运行期编译状况。
jstat工具主要选项:
-class
监控类装载、卸载数量、总空间及类装载所耗费的时间
-gc
监视Java堆状况,包括Eden区、2个survivor区、老年代、永久代等的容量,已用空间、GC时间合计等信息
-gccapacity
监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间
-gcutil
监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause
与-gcutil功能一样,但是会额外输出导致一次GC产生的原因
-gcnew
监视新生代GC的状态
-gcnewcapacity
监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间
-gcold
监视老年代GC状况
-gcoldcapacity
监视内容与-gcnew基本相同,输出主要关注使用的最大和最小空间
-gcpermcapacity
输出永久代使用到的最大和最小空间
-compiler
输出JIT编辑器编译过的方法、耗时等信息
-printcompilation输出已经被JIT编译的方法
C:\Users\Administrator>jstat -gcutil 4100 1000 100
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 3.00 23.77 54.91 7 0.131 3 0.247 0.378
0.00 0.00 3.00 23.77 54.91 7 0.131 3 0.247 0.378
0.00 0.00 3.00 23.77 54.91 7 0.131 3 0.247 0.378
0.00 0.00 3.00 23.77 54.91 7 0.131 3 0.247 0.378
新生代Eden区(E,表示Eden)使用了3.0%的空间,两个Survivor区(S0、S1,表示Survivor0、Survivor1)里面都空的,老年代(o,表示Old)和永久代(P,表示Permanent)使用了54.91的空间。
程序允许以来共发生Minor GC(YGC,表示Young GC)16次,总耗时0.131秒,发生Full GC(FGC,表示Full GC)3次,Full GC总耗时(FGCT,表示Full GC Time)为0.247妙,所有GC总耗时(GCT,表示GC Time)为0.378妙。
S0 — Heap上的 Survivor space 0 区已使用空间的百分比
S1 — Heap上的 Survivor space 1 区已使用空间的百分比
E — Heap上的 Eden space 区已使用空间的百分比,新生代Eden区
O — Heap上的 Old space 区已使用空间的百分比,老年代
P — Perm space 区已使用空间的百分比,永久代
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
jinfo:Java配置信息工具
jinfo是作用是实时查看和调整虚拟机的各项参数。使用jps -v参数可以查看虚拟机启动时显示执行的参数列表。
C:\Users\Administrator>jinfo -flag PretenureSizeThreshold 7832
-XX:PretenureSizeThreshold=0
jmap:Java内存映像工具
jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。
-dump 生成Java堆转储快照。
-finalizerinfo
显示在F-Queue中等待Finalizer线程执行finalize方法的对象。
-heap
显示Java堆详细信息。
-histo
显示堆中对象统计信息。
-permstat
以ClassLoader为统计口径显示永久代内存状态。
-F
当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。
C:\Users\Administrator>jmap -histo 7832 >D:\\j.txt
jhat:虚拟机堆转储快照分析工具
与jmap搭配使用,来分析jmap生成的堆 转储快照。
jstack:Java堆栈跟踪工具
jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或javacore文件)。
-f
当正常输出的请求不被响应时,强制输出线程堆栈
-l
除堆栈外,显示锁的附件信息
-m
如果调用到本地方法的话,可以显示C/C++的堆栈
分享到:
相关推荐
jvm命令行工具,java性能优化,jdk命令工具, jcmd命令、jps命令、jmap命令、jstack命令、jinfo命令、jstat命令
JVM调优前戏之JDK命令行工具.docx
VisualVM 是一个集成多个 JDK 命令行工具的可视化工具。可以作为 Java 应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分析线程信息,浏览内存堆数据。系统管理员可以利用它来监测、控制 Java 应用...
VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与JDK的标准版本是一致的。 可以...
Java VisualVM是一个多线程的监控分析工具,VisualVM 是一款免费的\集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。功能包括内存分析、快照功能、转储功能...
如果您不需要 Android Studio,可以下载 Android 命令行工具。可以使用包含sdkmanager的下载其他 SDK 包。该工具包含在 Android Studio 中。Android 命令行工具适用于macOS系统。
VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jstack,JConsole,这些工具与JDK的标准版本是一致的。 jinfo:...
Android 命令行工具(commandlinetools-linux-8092744_latest.zip)适用于Linux系统。 如果不需要 Android Studio,可以下载 Android 命令行工具。可以使用包含sdkmanager的下载其他 SDK 包。该工具包含在 Android ...
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。
isualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与JDK的标准版本是一致的。 可以...
性能分析神器VisualVM VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,提供强大的分析能力,对 Java 应用程序做性能分析和调优。 在高版本JDK(大于1.8或后期更新的1.8版本)中已经不会再自动集成 VisualVM,需要下载独立...
VisualVM程序性能分析工具是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分析线程信息,浏览内存堆数据。系统管理员可以利用它来监测、控制...
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU...
VisualVM是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分析线程信息,浏览内存堆数据。系统管理员可以利用它来监测、控制Java应用程序横跨...
windows快速切换jdk版本工具,直接通过命令行即可修改
VisualVM是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分析线程信息,浏览内存堆数据。系统管理员可以利用它来监测、控制Java应用程序横跨...
与先前的JDK版本相比,jdk-21...一旦安装完成,用户可以通过命令行工具或集成开发环境(IDE)开始开发和调试Java应用。此外,jdk-21还支持最新的Java特性和标准,确保开发者可以利用最新的技术和功能来构建创新的应用。
注意在Windows下,为了避免在使用命令行的时候出现问题,一般不要选择安装在C:\Program Files\jdk目录下,可以选择文件夹名没有空格的目录来安装,比如我一般安装在C:\Java目录下面。 1. 设置JAVA_HOME,指向jdk的...