一、jps:虚拟机进程状况工具 1、格式
2、参数列表 3、实战 jps 只显示了唯一ID(理解成进程号)和jar这个简略的名称。 jps -q 更过分了,只显示了进程号。毫无意义。 jps -l 显示了jar的全名称,我是脚本启动的jar,所以只显示了名称,若非脚本启动,则会显示jar的全路径。 jps -m 显示了我给main方法传递的参数,这里传了端口号(--server.port) jps -v 可以看出我们这个jar包设置了最大最小内存为128m。 还可以组合用 jps -l -v 这样我们既查看了jar的全路径又查看了他的JVM运行参数。 二、jstat:虚拟机统计信息监视工具 1、格式 jstat [参数] [vmid] [interval(s|ms)] [count] 说明下:VMID与LVMID区别:若是本地JVM进程,则一样,若是远程的JVM,则VMID格式应该是如下: [protocol:][//]lvmid[@hostname[:port]/servername] 2、参数列表 主要分为3类(类装载、垃圾收集、运行期编译状况)。 3、实战 参数太多了,这里只演示其中几个。 首先通过 jps -l 查出我们的进程号 jstat -class 22167 1000 3 每隔一秒钟输出进程号是22167的class装载卸载等信息,输出3次。 jstat -gcutil 22167 省略最后两个参数代表只输出一次结果。 三、jinfo:Java配置信息工具 1、格式 jinfo [option] pid 2、参数列表 3、实战 jinfo -flag MaxTenuringThreshold 22167 显示新生代对象晋升到老年代对象的最大年龄 jinfo -flag PrintGCDetails 22167 显示是否打印GC详细信息 不打印,因为是-PrintGCDetails 那就给他改成打印(注意,我们程序在运行中,我们要在运行的环境中修改运行时JVM参数) jinfo -flag +PrintGCDetails 22167 jinfo -flag PrintGCDetails 22167 四、jmap:Java内存映像工具 1、格式 jmap [option] vmid 2、参数列表 3、实战 jmap -histo 30773 >/tmp/test.txt 生成Java应用程序的堆快照和对象的统计信息(生成到/tmp下的test.txt),如下是test.txt的部分截图 jmap -dump:format=b,file=/tmp/heap.hprof 30773 打出dump堆,利于分析。 这时候就可以借助分析dump工具进行分析了。 五、jstack:Java堆栈跟踪工具 1、格式 jstack [option] vmid 2、参数列表 3、实战 jstack 30773 >>/tmp/jstack.txt 打印进程号是30773的信息到jstack.txt文件 六、如何解决故障 JDK自己提供了的性能监控可视化工具。 1、JConsole 2、VisualVM 这两个是可视化工具的使用,上网搜搜资料就会了。此处不讲解。 通过VisualVM可以让开发者发现各种异常情况,比如死锁,堆溢出等等。
Java码农社区 |
|
来自: Bladexu的文库 > 《技术文摘》