对象的可达性是判断一个对象是否需要进行垃圾回收的依据,即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垃圾回收...
详细的java垃圾回收机制的讲解以及java jvm对垃圾处理的应对策略。
详细描述讲解了java的垃圾回收机制
垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再...
Java垃圾回收机制总结
说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。经过半个世纪的发展,内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还要去...
Azul Systems CTO & co-Founder, Gil Tene 在SpringOne2GX 2012大会上发表的演讲资料,全面深入地阐述Java垃圾回收的四种机制。并介绍了当今世界上性能与吞吐量最高的JVM产品Zing JVM。 如果希望深入了解Java的垃圾...
垃圾收集器是Java语言区别于其他程序设计语言的一大特色。它把程序员从手工回收内存空间的繁重工作中解脱了出来。在SUN公司的Java程序员(Java Programmer)认证考试中,垃圾收集器是必考的内容,一般最多可以占总...
Java垃圾回收机制的详细介绍,调理比较清晰,个人进行的总结。
【Java面试题】Java垃圾回收机制
Java中类的生命周期与java垃圾回收机制
深入Java核心_探秘Java垃圾回收机制 深入Java核心_探秘Java垃圾回收机制
此文档详细介绍了java回收机制的工作原理、工作过程,以及在程序中使用的一些注意事项
你认真演示了一遍,你就能明白JAVA的垃圾回收机制。当然文档写的不一定全面,比如文档当中关于老年区少年区有一页写的不是很完整,我也没有添加太多进去,但是还是很有很全面很有参考意义的。
java垃圾回收器机制,代码举例注释及个人笔记
Java垃圾回收机制的学习和使用Java垃圾回收机制的学习和使用Java垃圾回收机制的学习和使用
Java垃圾回收机制详解!! GC详解!!
垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再...