`
chenhua_1984
  • 浏览: 1233013 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java的主要垃圾回收器

    博客分类:
  • java
阅读更多

 

         对象的可达性是判断一个对象是否需要进行垃圾回收的依据,即Gc root 与对象之间是否具有可达的路径,如果没有,则表明这个对象可以进行回收,对象被放到F-Quence的一个队列里,JVM会启动一个优先级较低的线程来对其进行回收。

         主要的垃圾回收算法有:标记--清除法:把可回收的对象一一打上标记,然后回收,这样做的缺点会产生不少内存碎片。

         所以有了复制的收集法:将内存一分为二,每次只适用其中一块,先标记出其中一块活着的对象,然后将这些活着的对象复制到另一块内存,在把剩下需要回收的对象回收掉。这样做的好处是内存碎片较少,但是当活着的对象较多时,需要多次复制,效率较低。所以,复制的回收方法一般用在年轻代。不能用在老年带。

        而老年带有大量长期存活的对象,所以采用标记--整理的回收算法,首先还是先标记出活着的对象,然后让活着的对象往一段移动,接下来把剩余死亡的对象清楚掉。

        所以,采用分代收集,在年轻代,一般会有大量的对象死去,活着的不多,那么采用复制的回收算法,而在年老代,则采用标记 清除或者标记 整理的算法回收。

       现在主流的垃圾回收都是按照分代进行收集的,新生代和年老代,还有方法区:永久内存(PermSize)区域,该区域也会发生垃圾回收,但是垃圾回收的效率远不能与新生代相比,应为可回收的东西不是很多,一般为死亡的常量,类的卸载信息等。


      常用的垃圾收集器:在年轻代主要有:Serial(串行收集),ParNew(并行收集),Parallel Scavenge(吞吐量收集器)收集器 新生代主要采用复制的收集算法。

       在老年带的垃圾收集器:serial  Old (串行收集,采用标记整理的算法),Parallel Old (标记整理算法),CMS (标记清除的算法,缩短停顿时间)

      在Java7 出现了G1收集器,同时作用域年轻代与老年代。

    Java的堆内存,分为年轻代,与老年代,往细了分,年轻代可分为 Eden区,幸存区,Java对象优先在Eden区分配,假如空间不足,会做一次Minor Gc。假如老年代空间不足,则会出现FullGc FullGc的速度比MinorGc慢10倍至少,所以一般尽量避免发生Full Gc。

  

分享到:
评论

相关推荐

    Java垃圾回收机制详解和调优.doc

    Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收...

    java高级之垃圾回收机制

    详细的java垃圾回收机制的讲解以及java jvm对垃圾处理的应对策略。

    java垃圾回收机制

    详细描述讲解了java的垃圾回收机制

    JAVA垃圾回收机制

    垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再...

    Java垃圾回收机制总结

    Java垃圾回收机制总结

    java 垃圾回收 机制详解

    说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。经过半个世纪的发展,内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还要去...

    深入了解Java垃圾回收机制

    Azul Systems CTO & co-Founder, Gil Tene 在SpringOne2GX 2012大会上发表的演讲资料,全面深入地阐述Java垃圾回收的四种机制。并介绍了当今世界上性能与吞吐量最高的JVM产品Zing JVM。 如果希望深入了解Java的垃圾...

    java 垃圾回收机制详细介绍

    垃圾收集器是Java语言区别于其他程序设计语言的一大特色。它把程序员从手工回收内存空间的繁重工作中解脱了出来。在SUN公司的Java程序员(Java Programmer)认证考试中,垃圾收集器是必考的内容,一般最多可以占总...

    Java垃圾回收机制

    Java垃圾回收机制的详细介绍,调理比较清晰,个人进行的总结。

    【Java面试题】Java垃圾回收机制

    【Java面试题】Java垃圾回收机制

    Java中类的生命周期与java垃圾回收机制

    Java中类的生命周期与java垃圾回收机制

    深入Java核心_探秘Java垃圾回收机制

    深入Java核心_探秘Java垃圾回收机制 深入Java核心_探秘Java垃圾回收机制

    java垃圾回收机制简述

    此文档详细介绍了java回收机制的工作原理、工作过程,以及在程序中使用的一些注意事项

    Java垃圾回收机制和内存分配

    你认真演示了一遍,你就能明白JAVA的垃圾回收机制。当然文档写的不一定全面,比如文档当中关于老年区少年区有一页写的不是很完整,我也没有添加太多进去,但是还是很有很全面很有参考意义的。

    java垃圾回收器代码举例

    java垃圾回收器机制,代码举例注释及个人笔记

    Java垃圾回收机制的学习和使用

    Java垃圾回收机制的学习和使用Java垃圾回收机制的学习和使用Java垃圾回收机制的学习和使用

    Java垃圾回收机制详解

    Java垃圾回收机制详解!! GC详解!!

    详细介绍Java垃圾回收机制

    垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再...

Global site tag (gtag.js) - Google Analytics