查找内存泄露方法:
1.可以使用jdk6.0自带的工具
jps -l 可以查看当前机器上所有运行的java进程
jinfo 命令显示指定的jvm进程所有的属性设置和配置参数
如:
1.可以使用jdk6.0自带的工具
jps -l 可以查看当前机器上所有运行的java进程
- [root@search1 srcStore]# jps -l
- 5218 sun.tools.jps.Jps
- 23979 com.test.commond.SrcStoreCommond
- 24222 com.test.command.Crawler
jinfo 命令显示指定的jvm进程所有的属性设置和配置参数
如:
- jinfo 23979
jstack 命令显示指定的jvm进程中所有线程的调用栈已经线程所处的状态
- jstack 23979
可以利用hprof分析指定java应用程序内存使用和cpu使用。
比如查看内存方面,在启动应用时添加参数:
- -agentlib:hprof=heap=sites,file=heap.txt
当程序运行一段时间后,停止运行程序。
打开heap.txt. heap.txt的最后有内存占用大小排名顺序。
找到前几个排名。查看其对应的trace值. 然后在heap.txt里查找该track值对应的信息。
会查找到类似主要的
- TRACE 306561:
- java.util.HashMap$Entry.<init></init>(HashMap.java:683)
- java.util.HashMap.addEntry(HashMap.java:753)
- java.util.HashMap.put(HashMap.java:385)
- com.mysql.jdbc.Connection.loadServerVariables(Connection.java:4321)
可以定位到某个类的某行。
也可以查看cpu信息。只需要把应用启动时加一个参数:
- -agentlib:hprof=cpu=samples,file=cpu.txt