性能优化

[安卓开发日记] 内存模型和GC

2020-04-08  本文已影响0人  chopperhl

一 、JAVA内存主要分5块:堆 - 方法区 - 程序计数器 - 本地方法栈 - 虚拟机栈

1.png

二、堆内存和GC

堆内存可以分为新生代、老年代,新生代里还可以细分为:Eden、From Survivor、To Survivor。大对象会直接分配到老年区。

可达性算法

通过一系列的"GC ROOTS" 的对象作为起始点,从起始点开始向下搜索到对象的路径。搜索所经过的路径称为引用链(Reference Chain),当一个对象到任何GC Roots都没有引用链时,则表明对象“不可达”,即该对象是不可用的。

GC ROOTS包含

GC算法

新生代区域 Eden 、From Survivor、To Survivor 内存比例为1:1:8
新创建对象一般加入Eden区,经历第一次GC存活后对象,加入Survivor区,Survivor区每次GC后年龄加一,到达15岁后,被放入老年代
如果创建对象过大会直接放入老年代

上一篇下一篇

猜你喜欢

热点阅读