zoukankan      html  css  js  c++  java
  • android GC内存回收小析

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

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

    没有被引用到的对象。

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

    垃圾回收的线程:

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

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

    垃圾回收的时机:

    app空闲的时候

    内存紧张的时候

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

    回收的方式:

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

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

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

    回收起点:

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

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

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

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

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

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

    回收的算法:

    引用计数

    标记法

    对象树

    回收的监控

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

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

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

  • 相关阅读:
    ac与ap同步分析
    ipsec原理(转载)
    Sublime Text自定制代码片段(Code Snippets)
    IPsec分析/测试/
    jQuery 学习
    windows pip 安装 转载
    转载 pep8安装
    转载别人的ftp,觉得目录结构不错,学习
    博客园 CSS 代码定制
    AC自动机
  • 原文地址:https://www.cnblogs.com/lzl-sml/p/3996283.html
Copyright © 2011-2022 走看看