java内存泄露

本文介绍如何使用JDK自带工具进行Java内存泄露的检测与分析,包括使用jps、jinfo、jstack及hprof等工具的方法,并展示了如何通过分析heap.txt文件定位内存泄露的具体位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查找内存泄露方法:
1.可以使用jdk6.0自带的工具
  jps -l 可以查看当前机器上所有运行的java进程
 

 
  1. [root@search1 srcStore]# jps -l  
  2. 5218 sun.tools.jps.Jps  
  3. 23979 com.test.commond.SrcStoreCommond  
  4. 24222 com.test.command.Crawler  

jinfo 命令显示指定的jvm进程所有的属性设置和配置参数
如:

 
  1. jinfo 23979  

 

jstack 命令显示指定的jvm进程中所有线程的调用栈已经线程所处的状态

  1. jstack 23979  

 

可以利用hprof分析指定java应用程序内存使用和cpu使用。

 比如查看内存方面,在启动应用时添加参数:

  1. -agentlib:hprof=heap=sites,file=heap.txt  

 

当程序运行一段时间后,停止运行程序。

打开heap.txt.  heap.txt的最后有内存占用大小排名顺序。

找到前几个排名。查看其对应的trace值. 然后在heap.txt里查找该track值对应的信息。

会查找到类似主要的

  1. TRACE 306561:   
  2.         java.util.HashMap$Entry.<init></init>(HashMap.java:683)   
  3.         java.util.HashMap.addEntry(HashMap.java:753)   
  4.         java.util.HashMap.put(HashMap.java:385)   
  5.         com.mysql.jdbc.Connection.loadServerVariables(Connection.java:4321)  

 

可以定位到某个类的某行。

也可以查看cpu信息。只需要把应用启动时加一个参数:

  1. -agentlib:hprof=cpu=samples,file=cpu.txt  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值