java 性能优化

本文详细介绍了JVM自带的性能监控工具JConsole,如何通过本地和远程连接来监视服务状态,包括概述、内存、线程等信息,并提供了诊断内存泄露的方法,如使用jmap命令和jhat工具生成堆转储文件。此外,通过jmap-histo <pid> 命令可以查看特定进程下的对象创建情况,帮助定位潜在的内存泄露源。
优化是个大问题啊,这两天开始研究了一下,在jdk5以后jdk就自带监视工具。
jconsole
这个工具就可以监视着你所连接的服务的大概的情况。(在window下dos直接输入jconsole就可以启动,linux下还没有实验)
启动后就会看到jconsole让你进行连接,有本地远程两种情况。然后你就可以进行查看了,里面有概述,内存线程,类等信息你可以参考。期中线程在最喜爱按有个检测死锁的功能哦(里面还有一些设置暂时还没有研究)

但是如果诊断具体问题比如说具体那个类引起了内存泄露则可能需要下面的命令
jmap 使用命令是 jmap -histo <pid> 该命令可以打印出该pid下的所有对象以及创建的数量。如果你看到自己的类排在了前面这可是个不太友好的信号哦。

除了jmap外还有个jhat命令不过这是jdk6之后才有的哦,这个命令感觉只是对jmap在web服务上增强了一下而已。
在使用jhat命令之前需要jmap的支持,jmap -dump:file=<file> <pid>该命令是将该pid下的信息生成jvm的二进制转储。如果怀疑内存泄露可以加上-XX:+HeapDumpOnOutOfMemoyError命令启动。
现在就剩下要查看该堆内容的时候了。可以使用jhat <file>启动也就是刚才jmap生成的那个文件,由于jhat比较占用空间,可以添加-J-Xmx384m命令启动jhat。然后你就会看到一些信息并登陆相关站点了,比如我是看的我的tomcat,输出信息是

Reading from dump.bin...
Dump file created Tue Nov 29 12:06:15 CST 2011
Snapshot read, resolving...
Resolving 145970 objects...
Chasing references, expect 29 dots.............................
Eliminating duplicate references.............................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
则访问我的tomcat7000端口就可以查看信息了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值