美文网首页
JAVA垃圾回收机制

JAVA垃圾回收机制

作者: tdeblog | 来源:发表于2016-08-03 16:42 被阅读0次

1.常用垃圾回收机制#

引用计数是一种简单单速度很慢的垃圾回收机制。每个对象含有一个引用计数器,当有引用连接至对象时,引用计数加1。当引用离开作用域或被置空时,引用计数减1。当垃圾回收器在列表中遍历时,发现某个对象的引用计数为0,就释放其占用的空间。例如python中:

num1 = 1
num2 = 1
print id(num1)
print id(num2)
//此时两个值的id相同

上例说明1本身是一个对象,num1和num2都是这个对象的引用,既是指向同一个对象的两个别名。

2.Java虚拟机的垃圾回收机制#

JAVA的GC实现了一种自适应的方式。根据当前情况,如果停止-复制后回收的垃圾很少则切换为标记-清扫方式,反之如果标记-清扫后垃圾很多则切换为停止-复制模式。JAVA垃圾回收并不是随时进行,只有在内存不足时才会执行,因为垃圾回收本身是一项很耗费资源的操作。

2.1停止-复制##

通过在两个堆上来回复制存活对象实现。首先运行的JAVA程序将会被暂停,GC扫描原有堆中的存活对象,拷贝的新堆中,一方面移除了非存活对象,另一方面紧凑了内存中的对象。但是这种方式开销较大,在垃圾对象很少的时候会浪费资源,所以当一次停止-复制之后检测到回收垃圾较少,GC会切换到标记-清扫模式。

2.2标记-清扫##

通过扫描堆上的每个对象,如果已经为存活对象则标记,第二次扫描是清扫非存活对象,但是不做紧凑操作,是一种原地操作。当一次标记-清扫之后发现存在大量垃圾对象则GC将切换到停止-复制模式。

相关文章

  • Java垃圾回收详解

    深入理解 Java 垃圾回收机制 深入理解 Java 垃圾回收机制 一:垃圾回收机制的意义 java 语言中一个...

  • Java 内存区域和GC机制

    Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与...

  • JVM垃圾回收机制

    JVM垃圾回收 整体思维导图 带着问题理解JVM垃圾回收机制 Java为什么需要垃圾回收机制; 回收哪部分垃圾; ...

  • java内存结构和GC机制

    Java垃圾回收概况 Java GC(Garbage Collection,垃圾回收)机制,是Java与C++/C...

  • 对 Java 内存的一些理解-[Android_YangKe]

    Java 垃圾回收机制优点 Java 内存模型 什么是内存抖动 什么是内存泄漏 垃圾回收机制常见算法 Java 垃...

  • Android知识大纲

    Android知识大纲 Java垃圾回收机制 Java内存是如何划分的,Java语言为什么要使用垃圾回收机制? 垃...

  • 优秀的程序员更重视阅读源码,不看源码那是假的

    从事Java开发的都知道java有个垃圾回收机制Garbage collection,要准确理解Java的垃圾回收...

  • JavaScript垃圾回收机制

    什么是垃圾回收机制? 和java,c#一样,javascript也有垃圾回收的机制,比如说c++和c就没有垃圾回收...

  • 2020-04-19 垃圾回收机制算法

    垃圾回收机制算法 垃圾回收机制概述 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存...

  • JVM之Java垃圾回收机制

    为大家推荐一篇写的通俗易懂的关于Java垃圾回收机制的文章理解Java垃圾回收机制 Java主要把内存分为堆内存和...

网友评论

      本文标题:JAVA垃圾回收机制

      本文链接:https://www.haomeiwen.com/subject/zbgqsttx.html