`
chenhua_1984
  • 浏览: 1254499 次
  • 性别: 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高级之垃圾回收机制

    本文将详细介绍Java中的垃圾回收机制及其工作原理,并探讨JVM如何管理和优化垃圾回收过程。 #### 二、JVM内存模型 JVM内存模型主要包括永久代(Permanent Generation, PermGen)、堆(Heap)和栈(Stack)三大部分。值得...

    Java垃圾回收机制总结

    Java中的垃圾回收机制主要使用Generation算法。该算法将对象分为三个代:新生代(Young Generation)、老年代(Old Generation)和永久代(Permanent Generation)。新生代是用于存储新生的对象,老年代是用于存储...

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

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

    java垃圾回收机制简述

    3. **对象回收**:当对象不再被任何引用所指向时,即认为该对象已成为垃圾,可被垃圾回收器回收。 具体来说,Java中的垃圾回收过程涉及以下几个关键步骤: 1. **标记(Marking)**:首先,垃圾回收器会从GC Roots...

    JAVA垃圾回收机制

    Java垃圾回收机制(GC)是Java编程语言的关键特性,它自动管理内存,释放不再使用的对象,以防止内存泄漏。GC的运作方式主要有两种策略:引用计数和对象引用遍历。 引用计数是一种简单但不完美的方法。每个对象都有...

    深入了解Java垃圾回收机制

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

    java 垃圾回收机制详细介绍

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

    Java垃圾回收机制

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

    Java与C#的垃圾回收机制

    ### Java与C#的垃圾回收机制 #### 一、引言 在现代编程语言中,内存管理是一项重要的功能,能够显著提升程序的稳定性和效率。本文将深入对比Java与C#这两种广泛使用的编程语言中的垃圾回收机制,帮助开发者更好地...

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

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

    java垃圾回收器代码举例

    Java垃圾回收器(Garbage Collector, GC)是Java编程语言中的一个重要特性,它负责自动管理内存,自动回收不再使用的对象,以防止内存泄漏。在Java中,程序员无需手动释放内存,这一过程由JVM(Java虚拟机)自动完成...

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

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

    Java垃圾回收详解

    ### Java垃圾回收详解 #### 垃圾回收基础概念 在Java编程语言中,垃圾回收(Garbage Collection, GC)是一项自动化的内存管理机制。它能够自动检测并释放那些不再被程序使用的对象所占用的内存空间,从而有效地...

    全面分析Java的垃圾回收机制

    除了上述基础算法,现代的Java垃圾回收器,如G1(Garbage-First)、ZGC(Z Garbage Collector)和Shenandoah,采用了更先进的策略,如并发标记、分代收集、增量收集等,以减少垃圾回收对应用程序性能的影响。...

    Java垃圾回收原理

    如果一个对象没有任何引用指向它,那么这个对象就可以被视为垃圾,并可被垃圾回收器回收。 #### 三、Java中的垃圾回收器 ##### 3.1 Serial Collector Serial Collector是最简单的垃圾回收器,它只使用单线程进行...

Global site tag (gtag.js) - Google Analytics