java调优总结

java程序一般运行时,会遇到哪些问题呢?

1.占用CPU过高

2.出现内存泄漏,占用的内存持续增加

3.出现资源争抢,性能低下

4.死锁


下面分别针对这几个场景说一下如何处理。

1.对于CPU高的情况

 1)通过top命令查找占CPU高的线程:

 命令样例:top -Hp 4939 -d 1 -n 1 (其中4939为java进程ID)

 http://blog.csdn.net/arkblue/article/details/8719727

 http://blog.csdn.net/hexin373/article/details/8846919

 2)通过jvisualvm工具,通过jmx方式连接到java进程上,然后选择“抽样器”,点击“CPU”,选择“线程CPU时间”,就可以看到占用CPU最高的线程了,然后查看这个线程当前的执行堆栈,就可以知道问题在哪里了


调优利器

1. jmap 对java堆内存生成dump文件

命令样例:jmap -dump:format=b,file=javadump.bin 4939  (其中4939为java进程ID)

http://blog.csdn.net/fenglibing/article/details/6411953

2.jstack 查看java线程调用栈

命令样例:jstack 4939 > jstack.txt  (其中4939为java进程ID)

http://blog.csdn.net/fenglibing/article/details/6411940

3.jvisualvm/jconsole

通过jmx方式连接远程tomcat配置:

http://blog.csdn.net/airobot008/article/details/3951524

4.内存分析工具MAT(eclipse插件)

MAT下载地址:http://www.eclipse.org/mat/downloads.php (有eclipse和独立安装包)

eclipse插件更新地址: http://download.eclipse.org/mat/1.3.1/update-site/

独立安装包:http://www.eclipse.org/downloads/download.php?file=/mat/1.3.1/rcp/MemoryAnalyzer-1.3.1.20140107-win32.win32.x86.zip

MAT工具介绍:http://wiki.eclipse.org/index.php/MemoryAnalyzer

http://www.360doc.com/content/12/1023/14/203871_243274421.shtml


java死锁检测样例(通过jconsole可以直接检测出死锁):

http://babyduncan.iteye.com/blog/1880231


资料:

JVM调优总结: http://wenku.baidu.com/view/5fb0770c4a7302768e99394d.html

使用 VisualVM 进行性能分析及调优:http://www.ibm.com/developerworks/cn/java/j-lo-visualvm/

HPROF命令详解:

-Xrunprof:file=java.prof,thread=y,depth=3

 http://www.cnblogs.com/ggjucheng/archive/2013/10/05/3352332.html









猜你喜欢

转载自blog.csdn.net/yinxing2008/article/details/25339777