1、dump the java heap 是什么意思?

  • dump:在计算机领域,dump译作“转储”:把内存某一时刻的内容,dump(转存,导出,保存)成文件。
  • heap:堆。对应stack(栈),为什么不是dump the java stack?
  • 堆(heap)和 栈(stack)有什么区别?
        堆:特点是 大,速度慢,无序,存复杂的数据,(存放对象)主要存放创建(new)出来的对象。存取速度慢,可以运行时动态分配内存。
       栈:特点是 小,速度快,有序,存简单的数据(基本数据类型变量、对象的引用变量(即指针)),变量出了作用域就会自动释放。栈的内存管理是通过栈的"后进先出"模式来实现的。     static变量:是放堆内存中存放,堆内存地址,存放在栈,以便于高速访问

 

2、dump the java heap 和 record 有什么区别?

  • 程序当中有哪些内存对象,记录的是某一刻的内存快照
  • record:记录一段时间内的对象创建情况

 

3、Shallow Size 和 Retained Size 的区别?

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

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

 

4、hprof是什么文件?

hprof 文件是 Java 的 内存快照文件(Heap Profile 的缩写),是java进程的内存镜像文件,里面包含了内存堆详细的使用信息。heap dump也是可以保存成为HPROF文件的,点击可保存起来,用于以后分析,或用其他工具分析。

 

5、使用MAT工具

 

 

 

参考:https://developer.android.google.cn/studio/profile/memory-profiler.html