JDK工具

四、jinfo: Java配置信息工具

 

jinfo 的作用是实时地查看和调整虚拟各项参数.使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,除了去找资料外, 就只能使用jinfo的-flag选项进行查询了(如果只限于JDK1.6或者以上版本的话,使用java -XX:+PrintFlagsFinal查看参数默认值也是一个很好的选择), jinfo还可以使用-sysprops选项把虚拟机进程里的System.getProperties()的内容打印出来,JDK1.6之后,jinfo在windows和linux平台都有提供,并且加入了运行期修改参数的能力,可以使用-flag[+|-] name或者-flag name=value修改一部分运行期可写的虚拟机参数值.JDK1.6中,jinfo对于windows平台功能仍然有较大限制,只提供了最基本的-flag选项.    

格式:

jinfo [option] pid

            

五、jmap: java内存映像工具

jmap命令用于生成堆转储快照(一般称为heapdump或dump文件).如果不使用jmap命令, 要想获取java堆转储快照,还有一些比较"暴力"的手段. 例如: -XX:+HeapDumpOnOutOfMemoryError参数, 可以让虚拟机在OOM异常出殃之后自动生成dump文件,又或者在Linux系统下通过Kill -3命令发送进程退出信号"吓唬" 一下虚拟机, 也能拿到dump文件.

jmap的作用并不仅仅是为了获取dump文件,它还可以查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率,当前用的是哪种收集器等.

和jinfo命令一样, jmap有不少功能在windows平台下都是受限的,除了生成dump文件的-dump选项和用于查看每个类的实例,空间占用统计的-histo选项在所有操作系统提供之外, 其余选项都只能在Linux/Solaris下使用.

格式:

jmap [option] vmid

选项:

-dump                        生成java堆转储快照.格式为

                                  -dump:[live,]format=b,file=<filename>,

                                  其中live子参数说明是否只dump出存活的对象

-finalizerinfo             显示在F-Queue中等待Finalizer线程执行finalize方法

                                  的对象.只在Linux/Solaris平台下有效

-heap                         显示堆详细信息, 如使用哪种回收器, 参数配置,分代状

                                  况等. 只在Linux/Solaris下有效.

-histo                         显示堆中对象统计信息,包括类,实例数量,合计容量

-permstat                  以ClassLoader为统计口径显示永久代内存状态. 只在

                                  Linux/Solaris下有效

-F                               当虚拟机进程对-dump选项没有响应时, 可以使用这个

                                  选项强制生成dump快照. 只在Linux/Solaris下有效

 

 

 

六、jhat: 虚拟机堆转储快照分析工具

jhat命令与jmap搭配使用, 用来分析jmap生成的堆转储快照. jhat内置了一个微型的http/html服务器,生成dump文件的分析结果后,可以在浏览器中查看. jhat的分析功能相对来说比较简陋, 所以使用的机会并不是很多,有很多更好的替代方案, 例如VisualVM,以及专业用于分析dump文件的eclipse memory analyzer, IBM HeapAnalyzer等工具.

 

七、jstack: Java堆栈跟踪工具

jstatck命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件). 线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁, 死循环, 请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因. 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待着什么资源.

格式

jstatck [option] vmid

选项:

-F                 当正常输出的请求不被响应时,强制输出线程堆栈

-l                  除堆栈外,显示关于锁的附加信息

-m                如果调用到本地方法的话,可以显式C/C++的堆栈

 

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值