(一) 垃圾回收器

一、引用计数器

    引用计数是一种简单但速度很慢的垃圾回收技术。

    创建的每一个对象都有一个与之相关联的引用计数器,当引用连接至这个对象时,引用计数加1。当引用离开作用域或者被置为null时,引用计数减1。管理引用计数的开销在整个程序生命中持续发生。垃圾回收器会站在含有全部对象的列表上遍历,当发现某个对象的引用计数为0 时,就会释放其占用的空间,但是,引用计数器模式经常会在计数数值变为0时立即释放对象。

    缺陷:如果对象之间存在引用,可能会出现“对象应该被回收,但引用计数不等于0”的情况。对垃圾回收器而言,定位这样的交叉自引用的对象组所需的工作量极大,引用计数器常用来说明垃圾收集的工作方式。

二、自适应的垃圾回收技术

    思想:对任何“活”的对象,一定能最终追溯到其存活在堆栈或者静态区的引用。如果从堆栈和静态存储去区开始,遍历所有的引用,就能找到所有的存活对象,对于发现的每个引用,必须追踪他所引用的对象,然后是此对象包含的所有引用,反复进行,知道“根源于堆栈和静态存储区的引用”所形成的的网络全部被访问为止。这解决了交互自引用的对象组的问题。

    如何找到存活对象:(取决于不同java虚拟机的实现)


    ①停止--复制 stop-and-copy:先暂停运行中的程序,然后将所有存活对象从当前对堆复制到另一个堆,没有被复制的全是垃圾。当对象被复制到新堆时,他们是一个挨着一个的,所以新堆保持紧凑排序,然后就可以按照前述方法简单、直接的分配新空间。 当把对象从一处搬到另一处时,所有指向他的应用都必须修正。位于堆或者静态存储区的引用可以直接被修正。,但可能还有其他指向这些对象的引用,他们在遍历的过程中才能被找到。

    缺点:效率降低, Ⅰ需要两个堆,然后在这两个堆之间来回倒腾,从而维护的空间增加一倍。 Ⅱ 复制浪费。程序进入稳定之后,可能只会产生少量的垃圾,甚至没有垃圾,尽管如此,这种复制式回收器仍然会将所内来回复制。



    为了避免上述情况,一些java虚拟机会进行检查:要是没有新垃圾产生,就会转到另一种工作模式

    ②标记--清扫:速度慢,但是当只会产生少量垃圾甚至不产生垃圾时,他的速度就很快

    从堆栈和静态存储区出发,遍历所有引用,进而找出获得对象。当他找到存活的对象的时候,就会给对象设置一个标记,在这个过程中不会回收人和对象,不会发生复制动作。当标记工作完成时,清理动作才会开始。在清理过程中。没有被标记的对象将被释放。不会发生任何复制动作。所以剩下的 堆空间是不连续的,垃圾回收器想要得到连续空间的话,就要重新整理剩下的对象。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供...
    简欲明心阅读 89,366评论 17 311
  • 1.一些概念 1.1.数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始...
    落落落落大大方方阅读 4,517评论 4 86
  • 来自: Android梦想特工队作者: Aaron主页: http://www.wxtlife.com/原...
    技术特工队阅读 4,354评论 0 28
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,528评论 3 83
  • 做一碗馥郁芬芳的茶, 你或许不知道, 那茶香 将随周遭空气中的水分飘向何方。。。 但那又有何妨 终有一天,她将直达...
    传媒丽人阅读 153评论 0 0