MAT 专题-程序员宅基地

技术标签: java  ui  开发工具  

http://smallnetvisitor.iteye.com/blog/1826434

运行user任务管理器查看到的pid号:

基于jmap导出的堆信息:

 

用装了mat插件的eclipse打开firstHeap.bin文件

选择Leak Suspects Reports模式,finish

点击details

这些对象有可能会溢出,然后我们打开OQL窗口

 

执行如下OQL语句

 

也就是说这个是null,但是仍然有强引用存在,gc的时候是不能回收的,这样就会出现内存的溢出问题

 

不懂就按F1,关于OQL有详细介绍,

或进官网  mat Querying Heap Objects:http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Ftasks%2Fqueryingheapobjects.html

一步一个脚印,方便自己复习,该出手时就出手,有错误,一定要指正,非常感谢,共同进步!

http://www.cnblogs.com/o-andy-o/archive/2013/06/11/3132316.html

所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size.
这是两个在平时不太常见的名词,本文会对这两个名词做一个详细的解释。

Shallow Size
对象自身占用的内存大小,不包括它引用的对象。
针对非数组类型的对象,它的大小就是对象与它所有的成员变量大小的总和。当然这里面还会包括一些java语言特性的数据存储单元。
针对数组类型的对象,它的大小是数组元素对象的大小总和。

Retained Size
Retained Size=当前对象大小+当前对象可直接或间接引用到的对象的大小总和。(间接引用的含义:A->B->C, C就是间接引用)
换句话说,Retained Size就是当前对象被GC后,从Heap上总共能释放掉的内存。
不过,释放的时候还要排除被GC Roots直接或间接引用的对象。他们暂时不会被被当做Garbage。

看图理解Retained Size

上图中,GC Roots直接引用了A、B和D三个对象。

A对象的Retained Size=A对象的Shallow Size
B对象的Retained Size=B对象的Shallow Size + C对象的Shallow Size

 

这里不包括D对象,因为D对象被GC Roots直接引用。
如果GC Roots不引用D对象呢?

此时,
B对象的Retained Size=B对象的Shallow Size + C对象的Shallow Size + D对象的Shallow Size

http://bjyzxxds.iteye.com/blog/1532937



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34405332/article/details/86345947

智能推荐

STM32 CubeIDE 使用 CMSIS-DAP烧录 (方法1--修改配置文件)_cmsis-dap怎么用-程序员宅基地

文章浏览阅读2.8k次,点赞29次,收藏40次。因为它是开源的,避免使用J-Link的Clone提醒,以及不同质量的盗版ST-Link的各种问题,以及同时调试多个项目时需要多个不同型号的调试器。CubeIDE目前只支持ST-Link、J-Link, 我们需要一些操作才能让它支持CMSIS-DAP。使用CMSIS-DAP需要.cfg后缀的文件,一般使用ST-Link调试器不会生成此文件。新工程配置完成后,如下图,暂时是没有Debug资源的。保存后,Debug下方,出现了刚才保存的cfg文件。1、生成调试器的CFG文件。2、打开Debug配置。_cmsis-dap怎么用

根据冯诺依曼原理 计算机分为哪五大部件,①冯·诺依曼计算机结构分为哪五大部分?...-程序员宅基地

文章浏览阅读8.8k次。输入设备、运算器、控制器、存储器、输出设备。冯.诺依曼计算机的工作原理,“存储程序控制”原理的基本内容:1、采用二进制形式表示数据和指令。2、将程序(数据和指令序列)预先存放在主存储器中(程序存储),使计算机在工作时能够自动高速地从存储器中取出指令,并加以执行(程序控制)。3、由运算器、控制器、存储器、输入设备、输出设备五大基本部件组成计算机硬件体系结构。扩展资料根据冯诺依曼体系结构构成的计算机,..._冯诺依曼计算机体系结构五大组成

广域网(WAN)--网络大典_wan atm和sonet协议-程序员宅基地

文章浏览阅读1.1k次。 广域网(WAN)是一种覆盖较大范围的计算机网络,其涉及整个世界网络。通常 WAN 连接多重较小网络,如局域网(LAN)或区域网(MAN)。世界最流行的 WAN 是因特网。因特网内部的某些部分也属于广域网。广域网可以由私人拥有也可以向服务器供应商租用,其中包含公用网络(用户共享)。  为了保密性和安全通信,组织通常使用依靠于公共交换数据网络(PSDN)的虚拟专用网络(VPN)。在 _wan atm和sonet协议

OpenGL ES3.1使用计算着色器(Compute Shader)_opengl es计算着色器-程序员宅基地

文章浏览阅读5.6k次,点赞7次,收藏11次。OpenGL ES3.1使用计算着色器(Compute Shader)1.基本介绍OpenGL ES从3.1版本开始支持计算着色器 工作模型有全局工作组和本地工作组,全局工作组包含由三维的本地工作组组成,本地工作组也由三个维度组成。本地工作组三个维度大小分别为:local_size_x,local_..._opengl es计算着色器

如何一年内做到Python总监,秘诀竟然是这样的_怎么才能做到会写python程序-程序员宅基地

文章浏览阅读353次。Python 是一门优雅而又不失实用的语言,它语法简单很容易学会,又具有极高的可读性和灵活性。在知乎上 Python 是受关注最多的编程语言。很遗憾在我初学的时候没有知乎这样的平台提供这么多的资源,甚至全靠自己摸索。虽然各类观点俯拾皆是,但是有时候却会让人迷失了方向。本次 Live 我将带来个人对 Python 开发工程师如何入门、提高和进阶的一些见解,希望通过我个人的工作经历、学习方法,给不同阶..._怎么才能做到会写python程序

aws ec2的key pairs的深入理解-程序员宅基地

文章浏览阅读3.3k次。ssh提到ssh,用过linux的应该都不陌生。通俗地说,就是通过工具生成一个key pair,linux server端存储public key,client端保留一个private key。通过支持ssh协议的客户端工具(putty,tera term)或者命令行工具(ssh),login到server的时候,需要输入linux用户名,同时选择一个保存private key的文件。只有..._aws keypair

随便推点

ROS源码阅读---局部路径规划之DWAPlannerROS分析-程序员宅基地

文章浏览阅读1.1k次,点赞5次,收藏12次。1 体系结构(1)主要成员base_local_planner::LocalPlannerUtil planner_util_; 用来存储运动控制参数以及costmap2d、tf等,会被传入dp_costmap_2d::Costmap2DROS* costmap_ros_;base_local_planner::OdometryHelperRos odom_helper_; 用来辅助获取o..._dwaplannerros

Cocos游戏源码有奖征集活动重磅来袭!-程序员宅基地

文章浏览阅读20次。风。风暴来临,扁舟破风。Cocos引擎中文站举办的游戏源码有奖征集活动将掀起最强风暴。藉此机会,各路游戏开发英豪摩拳擦掌,正欲一显身手,马到成功!峰。峰峦矗立,王者登峰。真正的游戏开发高手将与全国的开发者较量,直待夺取“最强”名号,会当凌绝顶,一览众山小,煮酒论英雄!锋。锋芒初露,剑走偏锋。谁说奇思妙想没有用,有才华的人不甘平庸。就算生活匆忙,工作繁重,但只要有一个机会,就应该不鸣则已,今日惊鸿!...

matlab计算机械臂素的,机械臂动力学——动力学建模-程序员宅基地

文章浏览阅读5.1k次,点赞9次,收藏89次。一、动力学基础概念基本动力学模型建模方法牛顿-欧拉法拉格朗日法连杆质量,连杆质心位置矢量,连杆质心惯性矩阵(通过动力学参数识别获得)二、牛顿-欧拉法运动外推:向外迭代计算连杆的角速度、角加速度和线加速度力外推:计算作用在连杆质心上的惯性力和力矩力矩内推:向内迭代计算关节力矩2.1 运动向外迭代2.1.1 刚体线速度和角速度线速度坐标系{A}为固定,坐标系{B}固连在刚体上。2.1.2 连杆速度连杆..._matlab机械臂惯性矩

CVE-2019-5786 漏洞原理分析及利用-程序员宅基地

文章浏览阅读1.5k次。CVE-2019-5786 漏洞原理分析及利用作者:Kerne7@知道创宇404实验室时间:2020年6月29日从补丁发现漏洞本质首先根据谷歌博客收集相关CVE-2019-5786漏洞的资料:High CVE-2019-5786: Use-after-free in FileReader,得知是FileReader上的UAF漏洞。然后查看https://github.com/chromium/chromium/commit/ba9748e78ec7e9c0d594e7edf7b2c07ea2a90

Linux 多线程和多进程的区别(小结)_java线程和linux线程的区别-程序员宅基地

文章浏览阅读8k次,点赞6次,收藏63次。最近学习Linux,看到“hairetz的专栏”的帖子不错,特转来大家一起学习。很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的..._java线程和linux线程的区别

uniapp/小程序实现下拉加载数据并自动刷新-程序员宅基地

文章浏览阅读1.1k次。//首先要在page.json文件里,对应的页面下面加上“"enablePullDownRefresh": true” { "path": "*************", "style": { "navigationBarTitleText": "****", "enablePullDownRefresh": true }export default { data() { return { rows: [], //通知公告 .

推荐文章

热门文章

相关标签