JVM命令学习总结
-
jps:JVM Process Status Tool,显示系统内所有的JVM进程;
-
jstat:JVM Statistics Monitoring Tool,可以收集JVM相关的运行数据,用于监控虚拟机各种运行状态信息的命令行工具。可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
-class: 监视类装载、卸载数量、总空间及类装载所耗费的时间 -gc: 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等的容量 -gccapacity: 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间 -gcutil: 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 -gccause: 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 -gcnew: 监视新生代GC的状况 -gcnewcapacity: 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间 -gcold: 监视老年代GC的状况 -gcoldcapacity: 监视内容与——gcold基本相同,输出主要关注使用到的最大和最小空间 -gcpermcapacity: 输出永久代使用到的最大和最小空间 -compiler: 输出JIT编译器编译过的方法、耗时等信息 -printcompilation: 输出已经被JIT编译的方法
查看Java堆状况
查看应用上一次gc原因
-
jinfo:Configuration Info for Java,显示JVM配置信息;
-
jmap:Memory Map for Java,用于生成JVM的内存快照;
堆Dump是反应Java堆使用情况的内存镜像,其中主要包括系统信息、虚拟机属性、完整的线程Dump、所有类和对象的状态等。 一般,在内存不足、GC异常等情况下,我们就会怀疑有内存泄露。可以制作堆Dump来查看具体情况,分析原因。
-dump: 生成Java堆转储快照。格式为:-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象 -finalizerinfo: 显示在F-Queue中等待Finalizer线程执行finalize()方法的对象。只在Linux/Solaris平台下有效 -heap: 显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效 -histo: 显示堆中对象统计信息,包括类、实例数量和合计容量 -permstat: 以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效 -F: 当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Linux/Solaris平台下有效。
导出整个JVM 中内存信息
-
jhat:JVM Heap Dump Browser,用于分析heapdump文件,它可以建立一个http/html服务,使用者可以在浏览器上查看分析结果;
jhat -J-Xmx512m <heap dump file> #内存大小可根据自己电脑进行设置
-
jstack:Stack Trace for Java,显示JVM的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的就是定位线程出现长时间停顿的原因,如死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。
#一般是使用jstack命令将java线程快照信息输出到文件中进行查看 例如:jstack pid > xx.txt
欢迎大家关注我的订阅号,会定期分享一些关于测试相关的文章,有问题也欢迎一起讨论学习!订阅号每一条留言都会回复!