使用JMAP和IBM HeapAnalyzer分析监控Java内存溢出_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 7370 | 回复: 0   主题: 使用JMAP和IBM HeapAnalyzer分析监控Java内存溢出        下一篇 
chengpeng.gong
注册用户
等级:中尉
经验:400
发帖:9
精华:0
注册:1970-1-1
状态:离线
发送短消息息给chengpeng.gong 加好友    发送短消息息给chengpeng.gong 发消息
发表于: IP:您无权察看 2014-6-11 18:00:31 | [全部帖] [楼主帖] 楼主

JMAP工具可以输出JAVA进程内存中所有对象情况,可以用来监控JAVA程序是否有内存泄露。
该命令使用方法:

jmap [ option ] pid
jmap [ option ] executable core
jmap [ option ] [server-id@]remote-hostname-or-IP


参数
option 参数是单一的,紧跟在命令后面。
pid 要被映射的进程。必须是java进程。
executable 产生核心转储的可执行java代码
core 要被映射的核心文件
remote-hostname-or-IP 远程调试服务器的域名或者ip地址(看jsadebugd)
server-id 可选唯一id,如果多个服务器运行在同一个远程主机


在java程序运行期间,在内存出现拐点的时候,dump内存,并建立内存数据文件。例如
jmap -dump:format=b,file=dump.txt pid ,使用前可以用jps获得JAVA进程列表,来查看JAVA进程的pid.

该命令执行后,会获取当前应用服务系统的占用内存并且保存在dump.txt文件中。

然后使用IBM HeapAnalyzer打开dump.txt文件,将会展现该dump文件中对象内存使用情况。

如果存在可疑内存泄露,将会以树形结构展现。通过分析占用堆内存比例找到占比最大的对象。
最后需要在程序中找到使用该对象的地方,再分析程序,确定产生内存泄漏的原因。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论