zoukankan      html  css  js  c++  java
  • 安装独立版本的MAT

    把下载好的压缩包解压到本地任意一个文件夹里,和eclipse一样,解压完成就可以使用了。下图是我的解压路径。解压完成点击箭头指向的执行文件启动MAT程序。
    下载地址:http://www.eclipse.org/mat/downloads.php

    导入dump的文件


     
    image.png

     
    image.png

     
    image.png

     
    image.png

    2.3、分析问题
    首先由此饼状图就可以看出问题出现a、b上,再看两问题的简单描述,b是出现在org.apache.catalina.loader.WebappClassLoader 中的,此是容器涉及的区域,可以排除,再看a描述为一个Timer-5的线程占据的51%的堆空间,所以基本可以断定问题出现在a上(这里还有一个比较直观,但不高效的办法,就是重新设置一下运行容器的参数,运行直到出错,再导入dump的文件,就可以对比饼状图,百分百变化很明显的就是问题原因出现的位置)


     
    image.png

     
    image.png

    再查看问题a的详情
    先看到累积点的最短路径


     
    image.png

    可以看到线程:地址是0xf7efbc18 ,名称为Timer-5,其中累积的为一个[java.util.HashMap]
    然后再看累积对象所在树的详情
     
    image.png

    可以看到积累了很多HashMap

    然后切换一个视图查看


     
    image.png

     
    image.png

    在第一行输入问题线程名(Timer-5)进行查询,进入找到累积点(堆占据最大)
     
    image.png

     
    image.png

    可以看到累积了22364个hashMap<String,OutOfMemoryTest>对象,这就是问题的根源

    然后再跟踪堆栈找到问题代码所在位置


     
    image.png

    此处比较简单,就是一个Timer-->myselvelt-->OutOfMemoryTest-->OutOfMemoryError
    可以看到问题可能是myselvelt.java的34行,OutOfMemoryTest.java的7行
    找到对应的代码区查找

    参考:https://www.jianshu.com/p/c6e2abb9f657



  • 相关阅读:
    shp转geojson
    Vue如何使用$refs
    Cesium加载轨迹
    Nodejs调用Python函数时传递参数
    JavaScript字符串截取:截取'final:'之后的字符串,然后再按照“,”分割。。
    Cesium平移操作
    架空输电线路障碍物巡检的无人机低空摄影测量方法研究
    cesium沿着路线飞行
    业界常用四种命名法则
    电脑优化
  • 原文地址:https://www.cnblogs.com/feiye512/p/12364203.html
Copyright © 2011-2022 走看看