在性能测试过程中,发现应用的内存一直升高,解决方案?
答:先去看应用是否配置了堆内存信息。若无,去配置,若已配置。如下:
手动执行垃圾回收,执行成功内存回落则垃圾回收机制正常,执行后内存依然不回落则垃圾回收机制有问题,需要进一步排查。
打堆dump信息,有两种方式:
第一种在jvm上面打:
点击堆dump,dump信息生成后会给出提示,在服务器的哪个路径下,进入到对应的服务器目录下查看dump,并且下载到本地,下载有两种办法:一种SZ,一种文件服务器方式,在此推荐文件服务器方式,因为文件太大,SZ方式会导致中途超时。
第二种是通过命令打堆dump信息:
命令为:
jmap -dump:format=b,file=文件名 [pid] 文件名为自定义,pid为进程id号,可以通过ps -ef|gerp java 来查看。
dump信息打完后,接下来就要分析了。
可以利用ibm工具去分析dump信息,看出来是哪里内存泄漏。
ibm如何去分析:
在图表处看是哪里的内存泄漏,再根据百分比看是哪里的内存泄漏,将泄漏的信息发给研发定位。
ibm工具启动时候一定要看服务器的内存,启动命令为:
java -jar -Xms4g -Xmx4g “ibm.jar”