Java程序内存问题跟踪

最近在研究Java程序内存问题跟踪,主要处理程序在上时间运行情况下各种 OutOfMemory 异常,将使用的工具和心得点滴记录在这里备忘

 

常用工具

JDK1.6版本自带很多丰富的内存/线程跟踪调试工具

 

jps命令,查看本机器所有Java进程vmid

jps -l

 

jstat命令,跟踪某一Java进程GC运行情况

jstat -gcutil [vmid] 2000    (每2秒刷新一次)

 

jmap命令,强制Java进程生成当前堆快照(dump文件)

jmap -dump:format=b,file=c:/xxx.bin [vmid]

 

jstack命令,生成虚拟机当前线程快照

jstack -l [vmid] > c:/xxx.txt

 

可视化工具:

jconsole

JDK自带

 

Eclipse Memory Analyzer

基于Eclipse框架开发,专用分析dump文件,可以从多种角度协助查找程序内存使用问题

 

VisualVM

基于NetBeans框架开发,独立下载,初次安装就是个框架,需要安装插件才能正常使用

 

VisualVM第一次启动会报一个异常(反正我这里第一次用一定报)

cannot find java 1.6 or higher

解决办法:到VisalVM安装目录 /etc/visualvm.conf 文件

将其中的 jdkhome 注释打开,并配置上本机JDK绝对路径即可

 

关于在VisualVM中监控远程服务的方法:

将如下代码保存文件,文件名命名为 jstatd.all.policy

grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };

 

 

将此文件拷贝到远程服务器的JDK bin目录中,在保持服务运行状态下,启动命令行窗口,切换到JDK/bin目录,运行如下命令

 

jstatd -p 1099 -J-Djava.security.policy=jstatd.all.policy

 

在VisualVM客户机上,添加远程服务器的IP地址(默认jstat监控端口使用的就是1099),就可以实现远程监控了

 

 

处理OutOfMemery心得

 

 

几篇很有价值的参考博客

http://shuwen.iteye.com/blog/1150002

http://www.jvmer.com/jvm-xx-%E5%8F%82%E6%95%B0%E4%BB%8B%E7%BB%8D/

http://lzj0470.iteye.com/blog/723515

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值