2 qq 21438599 qq_21438599 于 2016.03.16 22:34 提问

java内存快照的一系列问题

什么是内存快照?如何得到内存快照?如何分析内存快照?linux系统下!

3个回答

devmiao
devmiao   Ds   Rxr 2016.03.17 01:44
已采纳
willkinson
willkinson   2016.03.17 10:13

首先用ps -x找到你的进程号,用jmap -histo 进程号来打印输出目前堆里面的对象情况,太多就grep一下自己的业务类,分析一下哪个类的
实例数量超过你的预期,不过这个命令貌似有个缺点,在老区的可回收待回收的对象也会被统计进去,所以执行命令前最好触发一下full gc,
再详细点就用jmap -dump命令弄个文件出来,eclipse有插件可以打开查看,里面可以区分哪些是会被回收的哪些是堆里拿着的,
再不行就自己做个端口服务socket或者http之类的,自己连过去把目前的内存里的对象信息拿过来,前提是你对内存里面的对象管理能支持

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.17 10:29

jdk提供了Java虚拟机内存使用分析工具,jhat命令与jmap搭配使用,来分析jmap生成的堆转储快照。jstack是Java堆栈跟踪工具,jmap命令就是生成堆转储快照的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!