标记-清除 标记-清除算法是现代垃圾回收算法的思想基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象 标记-整理 根据老年代... ...
分类:
编程语言 时间:
2017-07-08 21:01:56
阅读次数:
217
jdk8中已经移除了永生代这个东东,数据转移到了metaspace area。 新创建的对象都放在eden, eden满了之后 jvm执行mark-copy算法,标记那些还幸存的对象,放到survivor1,其他的都清理掉。 等下一次eden或者survivor1满的时候,mark-copy又开始工 ...
分类:
其他好文 时间:
2017-07-05 18:50:50
阅读次数:
119
本文讲述的是HotSpot虚拟机中的垃圾收集器。下图展示了7种不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。 Serial收集器 单线程,只会使用一个CPU或者一条收集线程去完成垃圾收集工作。 进行垃圾收集时,必须暂停其他的所有线程,直到它收集结束。 Client模式下默认的 ...
分类:
其他好文 时间:
2017-05-30 20:56:23
阅读次数:
181
通过学习了解到现在商用的JVM中的垃圾收集采用的是分代收集算法,即针对不同年代采用不同的收集算法。在JVM中,GC主要作用于堆内存中,堆内存又被划分为新生代和老年代,由于新生代对象绝大多数是朝生夕死,而老年代相对存活时间就很长,故而需要使用不同的垃圾收集机制,所以垃圾收集器也就分为新生代收集器和老年 ...
分类:
其他好文 时间:
2017-05-25 01:15:37
阅读次数:
240
本篇主要介绍一下JVM的几种垃圾收集器。其示意图例如以下所看到的,上面的三个是新生代的收集器, 以下三个是老年代的收集器。当中G1收集器是能够用于新生代和老年代的收集工作。 JVM垃圾收集器 1、Serial(串行收集器):用于新生代GC,复制算法,启动时默觉得Client模式,GC的线程为单线程。 ...
分类:
其他好文 时间:
2017-05-22 15:15:54
阅读次数:
185
一、垃圾回收用到的主要算法 1.引用计数法 算法思路: 给对象中加入一个引用计数器。每当有一个地方引用他时,计数器值就加1;当引用失效时,计数器值就减1。当计数器的值为0时就能够把该对象删除。 算法长处: 实现简单,判定效率高 算法缺点: 难以解决对象之间相互循环引用的问题。 2.标记清除法 算法思 ...
分类:
其他好文 时间:
2017-04-29 09:50:52
阅读次数:
135
jvm垃圾收集算法 1、引用计数算法每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。还有一个问题是如何解决精准计数。这种方法现在已经不用了 2、根搜索算法从GC Roots开始向下搜索,搜索所走过的路径称为引用链 ...
分类:
其他好文 时间:
2017-04-25 13:29:02
阅读次数:
205
JVM垃圾收集算法有引用计数、标记-清除(mark-sweep)(主要用于老年代),复制(copying)(主要用于新生代),标记-整理(mark-compact)(主要用于老年代),分代收集算法,我们分别介绍 1、引用计数: 原理:此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的 ...
分类:
编程语言 时间:
2017-04-15 17:56:59
阅读次数:
175
判断对象是否存活 无用的类标准 垃圾收集算法:标记-清除算法(CMS)、复制算法(新生代)、标记整理算法 HotSpot算法 没有为所有指令都生成OopMap,程序并发所有地方都能停下来执行GC,只有到了安全点才能暂停 主动式中断:GC需要中断线程时,设置一个标志,线程执行时主动去轮询这个标志,再中 ...
分类:
其他好文 时间:
2017-04-15 14:50:30
阅读次数:
154
Java的内存结构 JVM内存结构——运行时数据区 JVM——代空间的划分 JVM——判断对象的死活 Java内存模型 Java中内存溢出与内存泄露 垃圾收集 JVM——垃圾收集算法 JVM——垃圾收集器 类的加载机制 JVM——三个ClassLoader详解 JVM——类加载机制 JVM——类的 ...
分类:
其他好文 时间:
2017-02-21 21:39:39
阅读次数:
186