• 垃圾回收


    先上两篇文章:

    1)C#技术漫谈之垃圾回收机制(GC):http://kb.cnblogs.com/page/106720/

    2)各种垃圾回收算法的通俗解释:http://jimoxiang.com/baiduspacearch/blog/blog/544606118.html

    里面有不少有用的说明。顺带Google一下Java/C#垃圾回收等关键字,大致浏览,好习惯。

    大道至简一下:

    0)垃圾回收是回收内存堆上的对象。

    1)垃圾回收可以分两步: 先识别垃圾,然后回收垃圾。

    2)基本的垃圾回收算法:

      引用计数——使用这个数来识别垃圾,识别出后回收。(引用数=0的对象为垃圾,回收他们。)

      标记清除——标记即识别垃圾,清除即回收。(不可达的对象标记为垃圾,清除他们。)【可达图上的结点均不是垃圾,垃圾是零散结点。】

      标记清除压缩——(多压缩一下,整理一下空间。)

      复制——A段空间,B段空间。将非垃圾对象从A复制到B,然后清空A。

    3)分代框架:

      假设分为3代,如图示。每代有一段空间,设想 [1->2->3] 为一漏斗。

      每次回收时,均回收1代。1代空间中的垃圾被收回,非垃圾对象落入2代。

      隔一小段时间,回收一下2代。2代空间的垃圾被收回,非垃圾对象落入3代。

      隔一大段时间,回收一下3代。3代空间的垃圾被收回,非垃圾对象保留。

    4)理解事物本身语义,并尝试探究背后的原理。非宏观的具体垃圾回收的实现,需要源码(如Java Hotspot)。

     

  • 相关阅读:
    php设计模式之观察者模式
    git tag 相关命令
    git 命令
    phpstudy 配置本地站点的ssl证书
    b
    __invoke,try{}catch(){},microtime(),is_callable()
    json_encode 中文不乱码
    php ::class
    yii 2 美化url
    JNIjw03
  • 原文地址:https://www.cnblogs.com/jiejue/p/2809202.html
Copyright © 2020-2023  润新知