JDK tools

Common Java Tools (JDK tools)

(只是简单说明,没有举例子,用时查找)在安装JDK时,JDK自带了好多有用的工具,这些工具能够帮助我们在控制台或者可视化界面解决一些我们程序的问题,或者查看程序,虚拟机的的状态等。

jps

jps命令能在控制台过滤出Java本身的进程以及运行的引导类(也就是引导的main方法所在的类),如果实在Linux平台上,我们可能会用类似的ps -ef | grep java来查看Java进程。

jstat

jstat命令一般用来定位问题,是比较快速地用于初步定位的一种方式,使用它可以看到JVM中每个区域的情况,根据不同的参数,可以看到每个区域的使用情况和比例。
例如jstat -gcutil<pid> 1000 2 其中代表进程号,1000代表每1000ms采集一次数据,也就是每秒采集一次,2代表总共采集两次数据。
-gcutil只是一个option选项,我们可以执行jstat -options来查看一共可以支持多少选项。

jmap

jmap 后面经常接如下3个参数。
jmap -heap <pid>,用于查看内存使用情况。一些OS上的JVM不支持这个参数。
jmap -histo <pid>,用于输出获得对象数目和大小,也是一个统计结果,以文本形式输出,可以重定向到某文件中,然后进行查看。
jmap -dump:format=b,file=heap.bin <pid>,它导出的文件和使用虚拟机参数-XX:HeapDumpOnOutOfMemoryError 导出的文件一样,都是导出JVM内存的信息形成的二进制文件,都可以使用MAT工具来分析,这个命令可以随时导出文件。
jmap的一个"坑",当使用它来dump内存时,系统会被暂停(要保证拷贝中内存没有变化)。它会先做一次Full GC再dump内存,活着的节点越多,时间越长。

jstack

jstack 主要用于输出线程信息,而我们主要看线程状态,在jstack中可以得到遍历的,通常使用jstack -l <pid>命令,如果为输出线程信息,则可以尝试使用-F参数来强制输出。(主要用于查看线程状态和检测死锁)

jinfo

用来查看Java进程的详细参数情况,例如:输出以-XX:开头的参数。如果想查看某些运行时参数甚至去做一些修改,则可以使用jinfo。

JConsole

以上所说的都是控制台命令, JConsole是一个图形化工具,能查看进程一些常见的信息,例如,概述,内存,线程,类,VM摘要,MBean等

Visual VM

图形化工具集,集成非常多工具的平台,很好用。

MAT(Memory Analyzer Tool)

Java 内存分析工具,分析JVM内存的dump文件。一般情况下主要是查看OOM错误产生的dump文件,分析原因。

Btrace

当JVM发生宕机时,如果我们已经发现占用空间较大对象的类型,但是很难定位这个大对象到底是哪段代码所创建或写入的数据,如果翻阅代码来查找就太费劲了,在定位问题时,我们只想知道哪段代码中调用过出现问题的类中的某个方法或写入过数据,将调用过这个类的响应方法的"调用栈路径"打印出来即可,BTrace可以做到这一点。
Btrace使用字节码增强技术来实现代码的跟踪,它是直接修改字节码的,而不是创建子类。(具体使用参见网络教程吧,实在是没有用过。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值