Java 垃圾回收新算法刍探
电子元件,电子元器件深圳市创唯电子有限公司
您现在的位置: 首页 > 电子技术
Java 垃圾回收新算法刍探  2012/3/1
摘 要: 由Java语言与C/C++对象在内存管理方式的不同,引出了Java语言的优势技术——垃圾处理技术。通过对GC工作原理的阐述及对一些传统的垃圾收集器的分析,提出了一种新的垃圾处理算法,一定程度上改善和提高了Java垃圾处理的性能。关键词: Java; GC; 垃圾回收; 收集器 Java从诞生以来以其在网络应用开发上独特的魅力以及“一次开发,随处运行”的可移植性引起了人们极大的兴趣。Java与以往的高级语言如C/C

摘   要:由Java语言与C/C++对象在内存管理方式的不同,引出了Java语言的优势技术——垃圾处理技术。通过对GC工作原理的阐述及对一些传统的垃圾收集器的分析,提出了一种新的垃圾处理算法,一定程度上改善和提高了Java垃圾处理的性能。
关键词:Java; GC; 垃圾回收; 收集器

    Java从诞生以来以其在网络应用开发上独特的魅力以及“一次开发,随处运行”的可移植性引起了人们极大的兴趣。Java与以往的高级语言如C/C++相比,在开发方面具有很大的优势,其中以对象内存管理机制中的垃圾处理机制(GC)最为突出。
1 C/C++与Java对象内存管理差别
    C/C++将内存划分成四部分:数据区、代码区、栈区、堆区。Java则把内存划分成三部分即代码区、栈区、堆区,代码区主要用于存放程序的代码,栈区主要用于存放局部变量、内部变量等中间性变量,堆区主要用来存放对象。
    C/C++中的对象内存管理是通过语句new()/delete()或malloc()/free()进行申请和释放的。用new()或malloc()申请内存后,若不使用delete()或free()进行释放,则所申请的内存一直被占用,即使不使用也不能自动释放,必须人为释放,导致编程工作很繁琐。
    Java中的对象内存管理则改进了对内存的释放过程,使用new()或其他方法申请的内存在不使用时,可以自动进行垃圾处理,释放内存,从而节省内存,使内存的使用更加高效、合理。
    Java中可以通过三种方法来销毁对象实现内存释放,这三种方法被称为Java销毁对象的三把利剑:垃圾回收器;finalize方法;利用System.gc方法强制启动垃圾回收器。
    垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法实现资源自动回收的功能系统,会自动进行GC策略。
2 GC概述
    Java垃圾处理主要是针对堆的管理,对堆中不使用的空间进行回收处理。判断一个对象的内存空间是否无用的标准是:如果该对象不能再被程序中任何一个“活动的部分”所引用,此时该对象的内存空间已经无用。所谓“活动的部分”,是指程序中某部分参与程序的调用,正在执行过程中,尚未执行完毕。
    具体以下两例予以说明:
实例1:
int [][]matrix=new int [2][3];
matrix=null;
此例中,第一句是用new语句在堆中为数组申请了一个空间,然后用matrix来引用此空间的对象(这里数组可以理解为对象),此时这个内存空间就是有用的。第二句是给matrix赋空值,matrix则不再引用此数组。此时,这个空间就是无用的。
实例2:
int [][] m1=new int[2][3];
int [][] m2=new int[2][3];
m1=m2;
此例中,第一句是用new语句在堆中为数组申请了一个空间,用m1引用这个数组。第二句是用new语句在堆中为数组申请了一个空间,用m2引用这个数组。第三句是改变引用对象,把m2的引用赋给m1,则此时m1也引用m2引用的对象数组,因此,m1原来引用的数组无人引用,成为垃圾。
3 传统收集器简介
    Java依托于垃圾收集GC机制,可以自动回收垃圾即释放堆空间,让其他对象可以使用此部分空间。而采用了某种 GC 算法的收集器(Collector)称之为某某垃圾收集器(Garbage Collector)。目前 Java中采用的垃圾收集器一般包括:引用计数法(Reference Counting Collector)、 Tracing算法(Tracing Collector)、Compacting算法(Compacting Collector)、Coping算法(Coping Collector)、Generation算法(Generational Collector)、Adaptive算法(Adaptive Collector)。
3.1 引用计数法

与《Java 垃圾回收新算法刍探》相关列表
电话:400-900-3095
QQ:800152669
库存查询
Copyright(C) 2011-2021 Szcwdz.com 创唯电子 版权所有 备案号:粤ICP备11103613号
专注电子元件代理销售  QQ:800152669  电子邮件:sales@szcwdz.com  电话:400-900-3095