全新java初学者实践教程14(java SE5.0版)----垃圾收集器

转载 2007年10月03日 11:42:00

   用过C++编程的人知道,编的时候总是要跟踪所创建的对象,并且需要显示地删除不用的对象。这种方式太麻烦了,容易出错。写了那么多代码,能记住吗,要是把有用的给删了怎么办,要是有没用的忘删了怎么办?这些问题是很严重的。在java语言中采用的垃圾收集器这种方式管理内存,就很方便也很安全了。垃圾收集器,可以自动确定哪个对象不再被利用,它可以自动将它删除。这也是java语言的一大优势。

    我们要想显示的删除一个对象的引用也很简单,将该引用的变量赋值为null不就行了吗?对于垃圾收集器来说,当程序员创建对象时,垃圾收集器就开始监控这个对象的地址、大小以及使用情况。通常,垃圾收集器采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是“可用的”,哪些对象是“不可用的”。当垃圾收集器确定一些对象为“不可用”时,垃圾收集器就回收这些内存空间。

    可是垃圾收集器却以较低的优先级在系统空闲周期中执行,通俗一点说就是它级别低,别人不运行时候才轮到它,因此垃圾收集器的速度比较慢。有些时候我们会使用System.gc()。手动回收。这样来提高性能。

    对于垃圾收集器来说还有一个值得一提的是finalize()这个方法,每一个对象都有一个finalize( )方法,这个方法是从Object类继承来的。它用来回收内存以外的系统资源,就像是文件处理器和网络连接器。该方法的调用顺序和用来调用该方法的对象的创建顺序是无关的。换句话说,书写程序时该方法的顺序和方法的实际调用顺序是不相干的。这只是finalize( )方法的特点。还有,每个对象只能调用finalize( )方法一次。如果在finalize( )方法执行时产生异常(exception),则该对象仍可以被垃圾收集器收集。那是一定了,不能说用到finalize()了。垃圾收集器就什么也不做了啊。finalize()的工作量是很大的哦

    总结:

    java用了垃圾收集器的内存管理方式,并不是说它完全的好。有的时候会影响它的性能,我们还是要手动来收集的。但是要是像C++那样完全手动来收集的话,那也实在是太麻烦了而且不是很安全。

 根据垃圾收集器的工作原理,我们可以通过一些技巧和方式,让垃圾收集器运行更加有效率。

 1.最基本的建议就是尽早释放无用对象的引用。
 大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null。
 2.尽量少用finalize函数。finalize函数是java提供给程序员一个释放对象或资源的机会。但是,它会加大垃圾收 集器的工作量,因此尽量少采用finalize方式回收资源。
 3.当程序有一定的等待时间,程序员可以手动执行System.gc(),通知垃圾收集器运行,但是java语言规范并不保证垃圾收集器一定会执行。

 

[课本划重点]深入理解jvm-第3章 垃圾收集器与内存分配策略(2)

先吐槽:欠了鸟哥的更新还给你! -------------------划重点------------------------- 1垃圾收集算法 1.1标记-清除(标记过程参见上一节) ♦️统一...

jvm优化-垃圾收集器的类型

分类 依据线程数:串行垃圾回收器和并行垃圾回收器 依据工作模式:并发垃圾回收器和独占垃圾回收器 依据碎片处理:压缩垃圾回收器和非压缩垃圾回收器 依据分代:新生代垃圾回收器和老年代垃圾处理器 评价GC策...

java初学者实践教程1-配置环境变量

环境变量这个概念,是我们平时用电脑时不常用的概念,所以大家在下载完jdk之后,不知如何配置环境变量。下面我解释一下,环境变量相对于给系统或用户应用程序设置的一些变量。应该怎么理解呢?我们来做一个实验吧...

java初学者实践教程2-jdk的使用

这节我们首先体验一下用java编写的程序。也让大家过把代码瘾,呵呵。目前世界上大部分的软件教程有一个习惯,最开始时总要输出一个字符串“HelloWorld”。我们也是不能免俗啊,也要输出这么一段话。 ...

浅谈Java语言的垃圾收集器

  • 2013年08月02日 11:27
  • 370KB
  • 下载

《深入java虚拟机--JVM高级特性与最佳实践》学习笔记(三) GC原理与垃圾收集器

JAVA对堆进行垃圾回收,其回收算法在很多教科书中都误写为引用计数。在大多数情况下,这是一个好算法,也有一些比较著名的应用案例,比如COM,AS3,Python语言。引用计数的一个弊端是,无法解决对象...

Java垃圾收集器使用小诀窍

  • 2011年06月10日 10:18
  • 28KB
  • 下载

深入理解Java虚拟机JVM高级特性与最佳实践阅读总结——第三章垃圾收集器与内存分配策略

引用计数法:给对象添加引用计数器,每当有一个地方引用它时,计数器值加1,;引用失效则计数器值减一,任何计数值为0的对象就是不可能被使用的 特点:简单高效,但不能解决对象之间的循环引用 可达性分析算...

[JAVA修炼之路七]-JVM 垃圾回收器

一、各种回收器特点 1、新生代串行回收器 a、运行过程中,应用中所有线程停止工作(STW) b、Client 模式下,默认收集器 c、分代复制算法 d、垃圾回收图 2、老年代串行回收器 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:全新java初学者实践教程14(java SE5.0版)----垃圾收集器
举报原因:
原因补充:

(最多只允许输入30个字)