`

6_(JAVA基础300集最全教程 学习)java的垃圾回收机制

阅读更多

首先要明白的是java中,程序员是不能指定程序什么时候回收内存的,也不可以要求马上回收某块内存,程序员可以在代码中显示的通知垃圾回收器需要回收内存,例如调用System.gc(),但具体什么时候去回收是垃圾回收自己去决定的。


说道回收,首先应该先说说现有的垃圾回收算法:
1.标记-清除算法:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象;-----标记和清除的效率都不高,且清除后会产生空间碎片问题;
2.复制算法:将内存快划分为两个大小相等的空间,每次使用其中的一块。当这一块使用完时就把存活的对象复制到另一块上面,再把已使用的内存快一次性清除掉;---会浪费一半的内存空间;
3.标记-整理算法:和标记-清除算法类似,第一步还是标记出所有存活的对象,而第二步就是让所有存活的对象向一端移动,然后直接清理调端边界以外的内存。----
4.分代收集算法:根据对象的存活周期,将内存空间划分为几块,一般分为:一个新生区,两个存活区,一个老年区,一个永久区;这样就可以根据各个区的特点选用最适合的收集算法。


在识别对象是否需要回收时,一般采用两种方式:引用计数和根节点跟踪的方式。
1.引用计数就是对象被引用一次,则在对象的计数器上增加一,释放一次则减一,当计数器为0时表示为无用对象,但存在一个问题:对象的相互引用问题;
2.根节点跟踪方式就从根节点开始可以抵达的节点,这些节点标识还存活着,其余不可抵达的都为无用对象。以下为根节点的取值范围:

由于不同厂家的实现方式并不一定一样,但总体上会包含以下方面:
1.局部变量中的对象引用;
2.栈帧的操作数栈;
3.类变量中的对象引用;
4.本地方法栈中的引用;




分享到:
评论

相关推荐

    java高级之垃圾回收机制

    ### Java高级之垃圾回收机制详解 #### 一、引言 在现代软件开发中,Java因其平台无关性、丰富的库支持以及自动内存管理等特性,成为企业级应用开发的首选语言之一。其中,垃圾回收机制(Garbage Collection, GC)是...

    Java垃圾回收机制总结

    Java垃圾回收机制总结 Java垃圾回收机制是Java虚拟机(JVM)中的一种机制,用于防止内存泄露和有效地使用空闲的内存。垃圾回收机制的主要目的是为了回收无用的对象占用的内存空间,使该空间可被程序再次使用。 ...

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

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

    Java垃圾回收机制

    ### Java垃圾回收机制详解 #### 一、Java垃圾回收机制概览 Java作为一种现代的、面向对象的编程语言,其一大特色就是引入了自动垃圾回收机制。这一特性极大地简化了开发人员的工作,使得他们不再需要手动管理内存...

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

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

    Java与C#的垃圾回收机制

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

    java 垃圾回收机制详细介绍

    在SUN公司的Java程序员(Java Programmer)认证考试中,垃圾收集器是必考的内容,一般最多可以占总分值的6%左右。但是由于SUN公司的Java Programming Language SL-275 课程的标准教材中,对有关垃圾收集器的内容只做...

    深入了解Java垃圾回收机制

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

    16_Java高级_JVM垃圾回收机制.avi

    16_Java高级_JVM垃圾回收机制

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

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

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

    Java垃圾回收机制是Java编程中至关重要的一部分,它自动管理内存,释放不再使用的对象,避免内存泄漏,并优化内存使用。Java虚拟机(JVM)的堆内存是存放对象的主要区域,当对象通过new等指令创建后,垃圾回收机制...

    Java Studty.rar_Java笔记_java基础学习

    10. **JVM和内存管理**:了解Java虚拟机(JVM)的工作原理,包括类加载、内存区域(堆、栈、方法区等)以及垃圾回收机制,对于优化程序性能和避免内存泄漏至关重要。 通过"Java Studty.rar"中的资料,初学者可以...

    01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip

    10. **垃圾回收机制**:理解Java的内存管理,包括堆和栈的分配,以及垃圾回收的基本原理。 11. **设计模式**:介绍常见的设计模式,如单例、工厂、观察者、装饰器等,以及它们在实际项目中的应用。 这个Java加强...

    Java基础教程PPT

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和强大...总的来说,这份“Java基础教程PPT”涵盖了Java编程的基本要素,是初学者理想的自学资料,通过系统学习,可以为进一步的Java开发打下坚实的基础。

Global site tag (gtag.js) - Google Analytics