黑马程序员技术交流社区

标题: 垃圾回收机制频率 [打印本页]

作者: 彭小康    时间: 2012-12-10 20:13
标题: 垃圾回收机制频率
垃圾回收的优点和原理。并考虑2种回收机制。

Java语言中一个显著的特点就是引入了垃圾回收机制,使c 程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
如上述中、垃圾回收机制频率是否可以认为改变、如果可以应该怎样操作大量冗余的数据?
作者: 乔叶旭    时间: 2012-12-10 22:24
        为了保证GC能够在不同的平台实现,java规范对GC的很多行为都没有进行严格的规定。例如对采用什么类型的算法回收、什么时候进行回收等重要问题都没有进行明确的规定,因此不同的jvm实现者通常有不同 的实现算法以下是一些java编程时的建议:
一,尽早释放无用对象的引用,注意一些复杂的对象,例如数组,队列等,对于此类对象,GC回收他们的效率一般较低,如果程序允许,应尽早将不用的引用对象赋为null,这样可以加快GC的工作。
二,尽量少用finalize函数,finalize是java提供给程序员用来释放对象或者资源的函数,但是它会加大GC的工作量,尽量少用finalize函数回收资源。
作者: 吴健    时间: 2012-12-10 22:30
      Java语言中一个显著的特点就是引入了垃圾回收机制,使 c++程序员最头疼的内存管理的问题迎刃而解,它使得 Java程序员在编写程序的时候不再需要考虑内
存管理。由于有个垃圾回收机制,Java 中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的
内存。垃圾回收器通常是作为一个单独的低级别的线程运行, 不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时
的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
      通常,垃圾回收机制采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当垃圾回收机制确定一些对象为"不可达"时,垃圾回收机制就有责任回收这些内存空间。可以。程序员可以手动执行 System.gc(),通知 垃圾回收机制运行,但是 Java 语言规范并不保证垃圾回收机制 一定会执行。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2