JVM02_堆内存常见问题、定位 jmap、mat(16)

发现问题

举例子:

把网盘里的test1.war包放到tomcat的webapps下 启动tomcat  访问:http://192.168.1.104:8080/test1/init1.jsp

/opt/apache-tomcat-8.5.41/conf/server.xml  这个位置配置项目路径,不是所有公司都是默认路径为了安全都不会使用默认路径,要写绝对路径。

查看一下进程号、看看进程是不是存在:

查看端口号:/opt/apache-tomcat-8.5.41/conf/server.xml  这里查看8080

jmeter进行压测—看结果

内存溢出:

1、访问的时候页面转圈,等待要不没法过去 、要不然没返回结果

常见溢出问题
java.lang.OutOfMemoryError: PermGen space //持久栈溢出
java.lang.OutOfMemoryError: Java heap space//堆溢出
java.lang.StackOverflowError   //栈溢出
例如:堆溢出

 2、fgc频繁回收和回收的时间需要关注—fgc很频繁每次如果时间很长,回收的时候应用就停止了。优化:要减少fgc频繁回收,回收的时间要缩减很短

3、ygc频繁回收和回收的时间需要关注—ygc很频繁每次如果时间很长、如果ygc每次回收1s时间过长也需要考虑。

————————————————————————————————————————————————————————————————————————————

内存溢出定位

jmap命令

jmap动态文件的大小

 

NUM——001

介绍jmap  -histo  pid ——由于文件较大要重定向

jmap -histo 3737 >histo.txt    

vi histo.txt

分析文件—instances被引用多少次在堆调用多次 ,bytes占用了堆内存的大小从大到小排序,classname 类名

谁占用堆内存大就分析谁是否造成内存溢出的原因

可以看出cn.test.TestBean  占用空间比较大,这个是应用程序里的包名找到TestBean.class类里的方法使用后没有被释放

用 jmap  -histo  pid  把堆内存占用的大小打印出来,看前20个有没有自己应用程序调用的类或者自己应用程序的方法,看包名:一般都是公司名加上项目名

top前20哪些className占用比较大,看看代码里的类

/opt/apache-tomcat-8.5.41/webapps/test1

vi init1.jsp

 —————————————————————————————————————————————————————————————————————————————————

分析:

如果前20没有明显的自己公司的package类和方法,可能显示就是object,这时分析需要mat工具

mat工具分析内存溢出—一定要配置同版本的jdk

mat—分析object对象是谁产生的,mat是eclipsec里的一个插件

1、先去把堆文件下载下来进行分析

jmap -dump:live,format=b,file=heap.bin <pid>

用命令解析此文件 jhat heap.bin

 

查看—浏览器访问 ip+7000

 

如有报错内存不足--------把内存分配大一些 jhat  -J-mx1024m  heap.bin 

 使用 mat 工具

前提条件:内存溢出,看default_report,还有jmap分析不出来用mat工具

页面里显示大对象的详情,把引用关系列出来本例子里是a对象比较大所有有一个分析,如果a,b都占用40%就两个实例

把heap.bin  下载到本地   
用工具打开heap.bin

mat自动生成报告

生成两个对象:a、b  total是总计占用内存空间

第一个大对象

看Details详情—

 看堆的活动情况和使用比率 ygc和fgc使用频率 jstat 命令

每隔2000毫秒打印5次

s0:存活区   s1:存活区E:eden  占eden区的比率,eden区有17%已被占用区O:老年代M:

CCS:YGC执行多少次:YGCT:ygc耗时FGC:FGCT:fgc的耗时 GCT:ygc+fgc所有时间之和

 

总结:

jmap  -histo   //定位内存泄漏原因

jmap  -dump  //分析内存溢出,jmap分析不出来,dump下来用mat工具分析

注:jmap -dump 一次就是执行一次fgc同时也ygc。

 ————————————————————————————————————————————————————————————————————————————————

 

posted @ 2019-06-05 17:04  大佳佳  阅读(468)  评论(0编辑  收藏  举报