Java千百问_07JVM架构(008)_java垃圾回收机制是什么

Posted 幽灵雾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java千百问_07JVM架构(008)_java垃圾回收机制是什么相关的知识,希望对你有一定的参考价值。

点击进入_更多_Java千百问

1、如何判断垃圾对象

垃圾收集的第一步就是先需要算法来标记哪些是垃圾,然后再对垃圾进行处理。通常的编程语言都会用以下算法之一进行判断:

  1. 引用计数(ReferenceCounting)算法
    这种方法比较简单直观,核心思路是,给每个对象添加一个被引用计数器,被引用时+1,引用失效-1,等于0时就表示该对象没有被引用,可以被回收。

FlashPlayer/Python使用该算法,简单高效。但是,Java/C#并不采用该算法,因为该算法没有解决对象相互引用的问题,即:当两个对象相互引用且不被其它对象引用时,各自的引用计数为1,虽不为0,但仍然是可被回收的垃圾对象。

  1. 根搜索(GC Roots Tracing)算法

基本原理是:GCRoot对象作为起始点(根)。如果从根到某个对象是可达的,则该对象称为可达对象(存活对象,不可回收对象)。否则就是不可达对象,可以被回收。</

以上是关于Java千百问_07JVM架构(008)_java垃圾回收机制是什么的主要内容,如果未能解决你的问题,请参考以下文章

Java千百问_07JVM架构(006)_java堆和栈有什么区别

Java千百问_07JVM架构(017)_jvm常见配置都有哪些

Java千百问_07JVM架构(018)_如何监控jvm的运行情况

Java千百问_07JVM架构(016)_java内存如何优化

Java千百问_07JVM架构(015)_XmnXmsXmxXss有什么区别

Java千百问_07JVM架构(001)_java内存模型是什么样的