一、背景
Android系统的APP运行需要依赖ART虚拟机(Android Runtime),ART虚拟机的主要作用是给APP的java代码提供运行环境,其中编译、执行、垃圾回收(GC)模块是ART虚拟机的重中之重。
CPU只能访问其寄存器(Register)和内存(Memory), 无法直接访问硬盘(Disk)。 存储在硬盘上的数据必须首先传输到内存中才能被CPU访问。从访问速度来看,对寄存器的访问非常快,通常为1纳秒; 对内存的访问相对较慢,通常为100纳秒(使用缓存加速的情况下);而对硬盘驱动器的访问速度最慢,通常为10毫秒。
寄存器(Register):CPU内部的高速存储区域;
当一个程序加载到内存中时,它由四个内存区域组成:
- 堆栈(Stack):存储由该程序的每个函数创建的临时变量
- 堆(Heap):该区域特别适用于动态内存分配
- 数据(Data):存储该程序的全局变量和静态变量
- 代码(Code):存储该程序的指令
二、GC是JVM内存回收机制
和GC有关的一些指标
例如某手机的gc卡顿问题时,发现他很容易触发GC_FOR_MALLOC,是分配对象内存不足时导致的。
可是我们又设置了很大的堆Size为什