安装好jdk后,进入JAVA_HOME/bin目录,可以看到该目录下有一些可供我们使用的工具,这些工具在遇到问题的时候可以很好的帮助我们排查。
1.jconsole
jconsole是一个可视化的工具,可以以图形化的方式向你展示java进程的各项数据,比如内存的占用和GC、线程数线程池、类的载入数量以及VM的摘要等,功能强大,如图:
jconsole可以连接远程主机,前提是目标主机进行了相关设置,比如启动参数
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
表示允许匿名通过1099端口连接该进程获取相关的数据。
2.jvisualvm
jvisualvm可以看作一个加强版的jconsole,除了jconsole提供的一些信息的查看,还可以对cpu内存进行取样分析,也可以dump出堆数据进行分析,另外支持一些其他的插件。
3.jps(JVM Process Status)
jps可以查看当前用户java进程的pid(如果想显示其他用户的java进程得用系统的ps命令),基本后面所有的命令都会用到pid。
$ jps
17113 Bootstrap
30207 Bootstrap
28573 Jps
27095 jar
在不加任何参数的情况下显示的是Main方法的文件名,参数 -l 显示具体的包名
$ jps -l
17113 org.apache.catalina.startup.Bootstrap
30362 sun.tools.jps.Jps
30207 org.apache.catalina.startup.Bootstrap
27095 slave.jar
此时如果同时启动两个tomcat(如上)可能还是没办法区分是哪个应用,参数 -v 显示jvm启动时带的参数,参数 -m 显示main方法的启动参数。
4.jinfo(JVM Configuration Info)
jinfo可以查看和设置JVM的参数,这个功能在动态修改JVM的参数场景下比较有用,不用重启应用服务器即可生效,当然如果设置参数值时报错:java.io.IOException: Command failed in target VM,说明该参数不支持修改。
查看比较简单,用法是jinfo -** pid
5.jmap(JVM Memory Map)
jmap用来打印java进程内存里面对象的使用情况,jmap -heap pid显示jvm堆的使用摘要,jmap -histo pid打印class的实例数目、内存占用、包含包路径的类名等信息(-histo:live时只统计活的对象)
该命令用得最多的是-dump参数,jmap -dump:format=b,file=filepath pid,使用hprof二进制形式dump jvm的堆内容到指定的文件,可用于后续的内存分析排查内存泄露等信息,-dump:live时只导出活的对象。
6.jstack(JVM Stack Trace)
jstack可以打印java进程的堆栈信息,jstack -l pid打印锁的一些附加信息,在排查死锁的时候比较有用。
7.jstat(JVM Statistics Monitoring Tool)
jstat用来对JVM堆的使用情况进行实时的统计,可以监控如下信息:
类的加载及卸载情况;
新生代、老生代及持久代的容量、使用情况和垃圾收集情况,并包含垃圾回收的次数及垃圾回收所耗费的时间;
新生代中s0及s1容量和分配情况。
jstat -options可以查看它支持的参数,用得比较多的有
$ jstat -gcutil 29784
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 99.46 76.34 49.36 31.06 30139 846.957 145 447.050 1294.007
输出分别代表s0使用百分比,s1使用百分比,新生代使用百分比,旧生代使用百分比,永久代使用百分比,自jvm启动后young gc的次数,耗费的时间,full gc的次数,耗费的时间,gc总的耗费时间(单位秒)。
还有-gc和-gccapacity也是较常用的参数。
8.jhat(JVM Heap Analyse Tool)
jhat用来分析dump出来堆里面的数据,可以将解析的数据以html的方式呈现。如果dump出来的堆很大可以加参数jhat -J-Xmx1024m jmapDumpFile解决堆内存不足的报错。
当然现在一般可以把dump文件下载到本地,用MAT(Memory Analyzer Tool)这种图形化工具来分析,速度比较快,而且图形化的结果可读性会更强。
相关推荐
JDK自带工具分析 1 1、工具分类概括: 2 1.1、基本工具 2 1.2、安全工具 3 1.3、Java国际化工具 3 1.4、远程方法调用工具 3 1.5、Java IDL and RMI-IIOP 工具 3 1.6、Java 部署工具 4 1.7、Java 插件工具 4 1.8、...
使用jdk自带的jar工具打jar包 采用命令行的方式 方便 快捷
利用jdk自带算法实现的AES加解密工具类及Base64编解码工具类、 文件操作工具类、aes扩展无限制权限策略文件等。 在jdk1.7环境亲测通过。
JDK自带调试工具doc JDK自带调试工具doc JDK自带调试工具doc
JDK自带工具之jinfo.docx
JDK自带的jarsigner签名工具帮助文档,指导大家用自带的JDK通过控制台签名apk;主要指令如下:jarsigner -verbose -keystore [您的签名存放路径]-signedjar [签名后的文件名] [未签名的文件名] [您的证书名称]
JDK自带VM分析工具jps,jstat,jmap,jconsole
CPU占用过高问题排查,java应用某台机器cpu比较高的情况,而且重启后基本上都会恢复正常。
Jconsole是Sun jdk 1.5以上版本自带的监控工具,可以对JVM进行全面的监控
NULL 博文链接:https://samjavaeye.iteye.com/blog/938657
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI ...
Tomcat开启JMX功能,使jdk自带的JVisvualVM工具连接JVM,轻松进行性能分析(csdn)————
java hprof(文件类型分析器)是一款功能强大的java问题解析软件。可以帮助大家在编辑过程种遇到问题的话就马上解决哦。有兴趣的话赶紧下载!...HPROF是JDK自带的分析工具,虽然只有基本功能,但是同样能提供程序的
NULL 博文链接:https://xcly.iteye.com/blog/861391
jdk1.7以上专用FTP工具类,本人花了半天时间调试通过,拿来即用,具体用法详见main函数。
远程连接工具,支持SFTP,FTP 需要自带jdk环境 该平台类似于网页版的Xshell,基于cookie和json的方式存储登录信息无数据库更方便兼容每个用户的使用,支持SFTP和FTP两种登录方式,打破原有黑端显示命令行和文件名的...
由浅入深,通过图解和手写代码,讲解Java版的多线程,主要讲解如下内容: ...JDK多线程工具包中,若干种工具的原理和手写实现: ReentrantLock、CountDownLanuh、CyclicBarrier、Semaphore
Your Uninstaller是一款专业的程序卸载工具,卸载功能比WIN自带的要程序卸载要强大很多,借助这你可以完卸载JDK软件,如果你碰到JDK无法卸载问题,可以使用Your Uninstaller可以助你一臂之力,轻松卸载任意版本JDK...
JDK自带工具生成ssl证书,经过上述操作,使用HTTPS 端口为8443 进行访问的时候 就是经过SSL信息加密,不怕被截获了。 通话的双方,必须是都拥有证书的端,才能进行会话,换句话说,就是只有安装了咱证书的客户端,...
NULL 博文链接:https://yimengzhu.iteye.com/blog/1879330