由于时间问题,简单的谈谈自己的理解。

大家都知道,在android开发中,不需要自己去管理,有垃圾回收机制会自动帮我们去回收

没有被引用到的对象。

那垃圾回收机制到底是怎样的呢?下面列出本人的一些理解。

垃圾回收的线程:

之前是在主线程做的,后面移到优先级比较低的线程中进行。

之前是单一线程,后面是多线程。

垃圾回收的时机:

app空闲的时候

内存紧张的时候

分配大的内存块不够用的时候。

回收的方式:

不采用分代技术:会一次性gc会遍历所有的对象,这样很费时

采用分代技术:分为年轻代,老年代,持久代。这样可以把生命周期短的,大小小的对象放到年轻代去

一次gc可以只遍历年轻代,只要释放的内存足够就可以不去遍历老年代等。

回收起点:

垃圾回收线程会从“根集(Root Set)”开始进行对象引用的遍历。

所谓的“根集”,就是正在运行的线程中,可以访问的引用变量 的 集合(比如所有线程当前函数的参数和局部变量、当前类的成员变量等等)。

垃圾回收线程先找出被根集直接引用的所有对象(不妨叫集合1),

然后再找出被集合 1直接引用的所有对象(不妨叫集合2),

然后再找出被集合2直接引用的所有对象......如此循环往复,直到把能遍历到的对象都遍历完。

凡是从根集通过上述遍历可以到达的对象,都称为可达对象或有效对象;反之,则是不可达对象或失效对象(也就是垃圾)。

回收的算法:

引用计数

标记法

对象树

回收的监控

可以重写Object finalize()函数。这个函数会在Object回收之前被调用

详细信息可以查阅下面地址:

http://hulefei29.iteye.com/blog/658546

android GC内存回收小析的更多相关文章

  1. Android 操作系统的内存回收机制(转载)

    Android 操作系统的内存回收机制(转载) Android APP 的运行环境 Android 是一款基于 Linux 内核,面向移动终端的操作系统.为适应其作为移动平台操作系统的特殊需要,谷歌对 ...

  2. Android 操作系统的内存回收机制[转]

    转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-mmry-rcycl/ Android APP 的运行环境 Andro ...

  3. gc内存回收机制

    判断哪些对象可回收 GC是通过对象是否存活来决定是否进行回收,判断对象是否存活主要有两种算法:引用计数算法.可达性分析算法 引用计数算法 引用计数的算法原理是给对象添加一个引用计数器,每被引用一次计数 ...

  4. Android Hook Dexposed原理小析

    dexposed是阿里巴巴在xposed框架上面开发的hotpatch一套框架 当然hotpatch的方式有很多,这里先介绍下dexposed原理 Demo中有个test函数, 在调用hook之前正常 ...

  5. Android 操作系统的内存回收机制

    参考 http://www.ibm.com/developerworks/cn/opensource/os-cn-android-mmry-rcycl/index.html

  6. 2 - JVM随笔分类(JVM堆的内存回收)

    JVM常用的回收算法是: 标记/清除算法 标记/复制算法 标记/整理算法 其中上诉三种算法都先具备,标记阶段,通过标记阶段,得到当前存活的对象,然后再将非标记的对象进行清除,而对象内存中对象的标记过程 ...

  7. JVM虚拟机 与 GC 垃圾回收

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.JVM体系结构概述 1.JVM 与系统.硬件 ​ JVM是运行在操作系统之上的,它与硬件没有直接的交 ...

  8. Android内存优化5 了解java GC 垃圾回收机制3

    引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Andro ...

  9. Android内存优化3 了解java GC 垃圾回收机制1

    开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...

随机推荐

  1. COGS502. 长路上的灯

    502. 长路上的灯 ☆   输入文件:light.in   输出文件:light.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 在一条无限长的路上,有一排无限长的路 ...

  2. PHP脚本memcache类的源码

    <?php /**  * @example $mem = new Memcached();  * @example $getCache = $mem->get('test');  * @e ...

  3. map reduce filter

    三个函数比较类似,都是应用于序列的内置函数.常见的序列包括list.tuple.str.   1.map函数 map函数会根据提供的函数对指定序列做映射. map函数的定义: map(function ...

  4. update-alternatives命令

    快速复习: 增加:$sudo update-alternatives --install 程序生成的快捷方式的目标完整位置 程序名 程序其中一个版本的完整路径 配置:$sudo update-alte ...

  5. pt-query-digest怎么分析慢查询日志分析数据

    在进行使用linux系统作为服务器的情况,那几需要进行对linux的服务器进行性能上数据进行抓取之后,就需要对数据中内容进行分析,看数据库中内容是否存在瓶颈上的问题,在进行获取到的数据的慢查日志,将使 ...

  6. #查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素

    #!/usr/bin/env python #查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素. #    li = ["alec", &quo ...

  7. C#读写本地ini

    //读写INI public class GF_INI { [DllImport("kernel32")] private static extern long WritePriv ...

  8. (转)eclipse 导入Android 项目 步骤

    1.打开eclipse 2. 点击File--选择-->Import,会出来图片,如图 3.按上面的点击android下的Existing Android...出来画面,如下图   4.点击Br ...

  9. Cheatsheet: 2013 09.01 ~ 09.09

    .NET Multi Threaded WebScraping in CSharpDotNetTech .NET Asynchronous Patterns An Overview of Projec ...

  10. CentOS 7 (无盘安装)PXE服务器的搭建(失败求助版)

    折腾了一天半,PXE无盘服务器以暂时失败而告终. 基本原理 1. 首先客户端主机需要支持PXE,大部分主板都支持. 2. PXE服务器需要安装DHCP.TFTP.FTP服务. 3. DHCP服务用来给 ...