首页 > 编程语言 > 详细

深入理解Java虚拟机(四) 垃圾回收机制

时间:2017-03-04 17:17:42      阅读:154      评论:0      收藏:0      [点我收藏+]

Write Once Run Anywhere,一次编写多处运行

一、判断垃圾的方法

  Java判断垃圾的算法主要是以下两种:

  引用计数算法

  • 给对象中添加一个引用计数器,当有一个地方引用它,计数器加1,当引用失效,计数器减1,任何时刻计数器为0的对象就是不可能再被使用的 。实现非常简单。
  • 没办法解决循环引用问题。比如:对象A有一个引用指向B对象,B也有一个引用指向A,如果A和B都没有被其他对象引用,其实已经是垃圾,但是没办法回收。
  • 并不实用,几乎没有主流的编程语言用这种GC判断算法(书本上一般按照这个来讲)

  根搜索算法

  • 通过一系列的称为“GC Roots”的点作为起始进行向下搜索,当一个对象到GC Roots没有任何引用链(Reference Chain)相连,则证明此对象是垃圾。
  • GC Roots包括: 1. JVM Stack的引用变量 2.方法区中的静态引用 3. JNI(即一般说的Native方法)中的引用
    Java, C#, Lisp等有GC特征的语言都是用根搜索算法

二、JVM常见的垃圾回收算法

  1、标记-清除算法(Mark-Swap)

  2、标记-整理算法(Mark-Compact)

  3、复制算法(Copying)

  4、分代算法(Generational)

技术分享

深入理解Java虚拟机(四) 垃圾回收机制

原文:http://www.cnblogs.com/shiguangzhe2013/p/6501843.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!