java性能监测工具

jinfo

  • 用法:
    jinfo [ option ] pid
    jinfo [ option ] executable core
    jinfo [ option ] [server-id@]remote-hostname-or-IP

  • 参数:
    pid 进程号
    executable 产生core dump的java executable
    core core file
    remote-hostname-or-IP 主机名或ip
    server-id 远程主机上的debug server的唯一id

  • 选项:
    no option 打印命令行参数和系统属性
    -flags 打印命令行参数
    -sysprops 打印系统属性
    -h 帮助

观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数
实例:

jinfo 2083 

其中2083就是java进程id号,可以用jps得到这个id号。

jps

用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程,可以把jps理解为ps的一个子集。
使用jps时,如果没有指定hostid,它只会显示本地环境中所有的Java进程;如果指定了hostid,它就会显示指定hostid上面的java进程,不过这需要远程服务上开启了jstatd服务。

  • 命令格式
    jps [ options ] [ hostid ]

  • 常用参数说明
    -q 忽略输出的类名、Jar名以及传递给main方法的参数,只输出pid。
    -m 输出传递给main方法的参数,如果是内嵌的JVM则输出为null。
    -l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。
    -v 输出传给JVM的参数。
    -V 输出通过标记的文件传递给JVM的参数(.hotspotrc文件,或者是通过参数-XX:Flags=指定的文件)。
    -J 用于传递jvm选项到由javac调用的java加载器中,例如,“-J-Xms48m”将把启动内存设置为48M,使用-J选项可以非常方便的向基于Java的开发的底层虚拟机应用程序传递参数。

jmap

打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=outfile 3024可以将3024进程的内存heap输出出来到outfile文件里。
64位机上使用需要使用如下方式:
jmap -J-d64 -heap pid

  • 命令格式

    jmap [ option ] pid
    jmap [ option ] executable core
    jmap [ option ] [server-id@]remote-hostname-or-IP

  • 参数说明
    -dump:[live,]format=b,file= 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
    -finalizerinfo 打印正等候回收的对象的信息.
    -heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况
    -histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
    -permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.
    -F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.
    -h | -help 打印辅助信息
    -J 传递参数给jmap启动的jvm.
    pid 需要被打印配相信息的java进程id,创业与打工的区别 - 博文预览,可以用jps查问.

  • 使用示例

    jmap -histo 4939
    
    jmap -dump:format=b,file=test.bin 4939
    Dumping heap to /home/fenglb/test.bin ...
    Heap dump file created

jstat

Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:
- 类的加载及卸载情况
- 查看新生代、老生代及持久代的容量及使用情况
- 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间
- 查看新生代中Eden区及Survior区中容量及分配情况等
jstat工具特别强大,它有众多的可选项,通过提供多种不同的监控维度,使我们可以从不同的维度来了解到当前JVM堆的使用情况。详细查看堆内各个部分的使用量,使用的时候必须加上待统计的Java进程号,可选的不同维度参数以及可选的统计频率参数。
它主要是用来显示GC及PermGen相关的信。

  • 语法
    jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
    generalOption - 单个的常用的命令行选项,如-help, -options, 或 -version。
    outputOptions -一个或多个输出选项,由单个的statOption选项组成,可以和-t, -h, and -J等选项配合使用。
    statOption:
    根据jstat统计的维度不同,可以使用如下表中的选项进行不同维度的统计,不同的操作系统支持的选项可能会不一样,可以通过-options选项,查看不同操作系统所支持选项,如:
    Option Displays…
    class 用于查看类加载情况的统计
    compiler 用于查看HotSpot中即时编译器编译情况的统计
    gc 用于查看JVM中堆的垃圾收集情况的统计
    gccapacity 用于查看新生代、老生代及持久代的存储容量情况
    gccause 用于查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因。
    gcnew 用于查看新生代垃圾收集的情况
    gcnewcapacity 用于查看新生代的存储容量情况
    gcold 用于查看老生代及持久代发生GC的情况
    gcoldcapacity 用于查看老生代的容量
    gcpermcapacity 用于查看持久代的容量
    gcutil 用于查看新生代、老生代及持代垃圾收集的情况
    printcompilation HotSpot编译方法的统计

  • 不同的统计维度(statOption)及输出说明
    http://blog.csdn.net/fenglibing/article/details/6411951这篇文章

  • 使用示例

    jstat -gcutil 8272

jstack

jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息.
如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

  • 命令格式
    jstack [ option ] pid
    jstack [ option ] executable core
    jstack [ option ] [server-id@]remote-hostname-or-IP

    -常用参数说明
    executable Java executable from which the core dump was produced.
    (可能是产生core dump的java可执行程序)
    core 将被打印信息的core dump文件
    remote-hostname-or-IP 远程debug服务的主机名或ip
    server-id 唯一id,假如一台主机上多个远程debug服务
    基本参数:
    -F当’jstack [-l] pid’没有相应的时候强制打印栈信息
    -l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.
    -m打印java和native c/c++框架的所有栈信息.
    -h | -help打印帮助信息
    pid 需要被打印配置信息的java进程id,可以用jps查询.

  • 使用示例

 jstack 8272
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值