`

几个比较实用的JVM进程分析命令

 
阅读更多

jps:显示本机所有jvm进程
jps -q #只显示进程号
jps -l  #显示主类全名或所在jar路径
jps -m #显示传给main类的参数信息
jps -v #显示进程启动时指定的jvm参数

jinfo:查看或设置java虚拟机参数
jinfo -flag MaxPermSize <pid> #显示该jvm进程的-XX:MaxPermSize参数值(无所谓是否在启动脚本中设置了该参数)

jstat:虚拟机统计信息监视,可以监控类装载、内存gc情况、jit编译情况等
jstat -class <pid> #监视类装载情况
jstat -gc|gcdetail|gcutil|gccause <pid> #gc情况与内存使用
jstat -gcnew|gcnewcapacity  <pid> #新生代gc情况
jstat -gcold|gcoldcapacity <pid> #老年代gc情况
jstat -gcpermdetail <pid> #持久带gc情况
jstat -gc <pid> 100ms 4 #每隔100ms检测gc情况,一共检测4次
jstat -gc protocal://<pid>@hostname:port/servername #检测远程主机

jmap:java内存映射工具,可查看堆内存信息
jmap -dump:[live,]format=b,file=<filename> <pid> #将pid对应的jvm进程堆内存dump到filename文件
jmap -histo <pid> #显示堆中对象的统计信息,如类、实例数量等
jmap -permstat <pid> #以classloader为统计口径显示永久代内存状态,only for linux

jhat:虚拟机堆dump文件查看分析工具,执行后会启动一个http服务器,用网页即可看见堆内对象的情况,亦可以使用OQL查询
jhat <pid>

jstack:java线程堆栈查看工具
jstack -l <pid> #加l参数同时会显示锁信息

jconsole:图形化的java进程监控工具
提供查看系统CPU,进程内存、线程、对象等信息

jvisualvm:图形化的java进程AllInOne处理工具
除jconsole功能外,还提供堆dump与分析、动态对象性能分析、离线快照等功能,另外其可以通过plugin插件进行功能扩展

 

分享到:
评论

相关推荐

    resin-jvm 调优

    比如,以下命令把新域设置成64m,Eden占32m,每个救助域各占16m: java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2 如前所述,默认状态下HotSpot对新域使用复制收集器,对旧域使用标记-清除-压缩收集器...

    分析运行中的 Python 进程详细解析

    在 Java 中打印当前线程的方法栈,可以用 kill -3 命令向 JVM 发送一个 OS 信号,JVM 捕捉以后会自动 dump 出来;当然,也可以直接使用 jstack 工具完成,这些方法好几年前我在这篇性能分析的文章 中介绍过。这样的...

    Tomcat内存溢出的三种情况及解决办法分析

    这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理...

    Java异常诊断greys-anatomy.zip

    常用的几个Btrace脚本整合在一起形成一个独立风格的应用,但其核心代码用的是Scala,我们没这方面的编程维护经验,所以只好艳羡HouseMD 的才思敏捷而无法在其上增加功能。 于是乎,Greys诞生了。 PS:目前...

    Java应用中使用ShutdownHook友好地清理现场

     JDK在1.3之后提供了Java Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用:  1)程序正常退出  2)使用System.exit()  3)终端使用Ctrl+C触发的...

    新版Android开发教程.rar

    也有分析认为,谷歌并不想做一个简单的手机终端制造商或者软件平台开发商,而意在一统传统互联网和 移 动互联网。----------------------------------- Android 编程基础 4 Android Android Android Android 手机新...

    net学习笔记及其他代码应用

    创建了几个String Object? 答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。 38.abstract class和interface有什么区别? 答: 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于...

    redisStudy.zip

    原理是redis会单独创建(fork)一个与当前进程一模一样的子进程来进行持久化, 这个子线程的所有数据(变量。环境变量,程序程序计数器等)都和原进程一模一样,会先将数据写入到一个临时文件中, 待持久化结束了,...

    Google Android SDK开发范例大全(完整版)

    G1 问世几个月之后,随后就发布了 Android Market,它使用户可以浏览应用程序,并且可以将应用程序直接下载到他们的手机上。经过大约 18 个月,一个新的移动平台进入公众领域。 ---------------------------------...

    java开源包8

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java 面试题 总结

    创建了几个String Object? 两个 28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ ...

    超级有影响力霸气的Java面试题大全文档

    创建了几个String Object? 两个 31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?  SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个...

    java面试题

    Spring由那几个模块组成? 答:Spring主要由7个模块组成: 1:Spring核心容器:提供了Spring框架的基本功能 2:Spring AOP:通过配置管理特性 3:Spring ORM:Spring框架集成了若干ORM框架 4:Spring DAO:打开...

    java开源包1

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包11

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包2

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包3

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包6

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包5

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包10

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

Global site tag (gtag.js) - Google Analytics