java进程服务内存占用高,排查解决

1.查看内存占用过高的进程PID

top -c

2.查看内存中存活对象的统计,找出业务相关的类名

jmap -histo:live PID > xxx.log

3.上面简单的统计信息还是没法定位问题类的话,就输出内存明细来分析,下面的命令会输出内存中所有的信息,输出的文件大小和内存大小基本一致,而且会导致内存暂时挂起,谨慎使用。

jmap -dump:live,format=b,file=xxx.hprof PID

4.对dump下来的文件进行分析,文件大小不是很大的话,使用jdk自带的jhat命令即可,输入命令:jhat -J-mx2G -port 7170,该命令可以查看内存占用的对象。
如果文件太大,可以下载到本地使用jdk自带的 jvisualvm 工具进行分析。下面详细讲怎么使用jvisualvm定位内存占用问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。