Java中的垃圾回收

转载 2007年09月16日 00:22:00

转自:http://www.blogjava.net/lostfire/archive/2006/06/04/50276.html

Java堆的管理—垃圾回收提到一下几点,很不错,或许可以作为写程序时候的准则:
(1)不要试图去假定垃圾收集发生的时间,这一切都是未知的。比如,方法中的一个临时对象在方法调用完毕后就变成了无用对象,这个时候它的内存就可以被释放。

  (2)Java中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的方法--调用System.gc(),但这同样是个不确定的方法。Java 中并不保证每次调用该方法就一定能够启动垃圾收集,它只不过会向JVM发出这样一个申请,到底是否真正执行垃圾收集,一切都是个未知数。

  (3)挑选适合自己的垃圾收集器。一般来说,如果系统没有特殊和苛刻的性能要求,可以采用JVM的缺省选项。否则可以考虑使用有针对性的垃圾收集器,比如增量收集器就比较适合实时性要求较高的系统之中。系统具有较高的配置,有比较多的闲置资源,可以考虑使用并行标记/清除收集器。

  (4)关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是最重要的,不要让自己的一个小错误导致内存出现大漏洞。

  (5)尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null,暗示垃圾收集器来收集该对象,还必须注意该引用的对象是否被监听,如果有,则要去掉监听器,然后再赋空值。

就是说,对于频繁申请内存和释放内存的操作,还是自己控制一下比较好,但是System.gc()的方法不一定适用,最好使用finallize强制执行或者写自己的finallize方法。

 

java什么时候进行垃圾回收,垃圾回收的执行流程

今天所学,做下笔记 java的垃圾回收分为 三个区域新生代 老年代 永久代 一个对象实例化时 先去看伊甸园有没有足够的空间 如果有 不进行垃圾回收 ,对象直接在...
  • jidong2622
  • jidong2622
  • 2017年10月01日 14:23
  • 589

java垃圾回收之循环引用

工作原理:为每个内存对象维护一个引用计数。 当有新的引用指向某对象时就将该对象的引用计数加一,当指向该对象的引用被销毁时将该计数减一,当计数归零时,就回收该对象所占用的内存资源。 缺陷:在...
  • sunmenggmail
  • sunmenggmail
  • 2012年11月11日 22:19
  • 8210

java语言中垃圾回收的优点和原理

1、java的一个重大特点就是引进了垃圾回收机制,它使得java程序员在编写程序的时候不用考虑内存管理。 2、由于有了垃圾回收机制,java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域...
  • u011936251
  • u011936251
  • 2017年08月24日 18:18
  • 287

Java垃圾回收机制——java堆

将新生成的对象放入Eden,若Eden满了可以放From Survivor空间,如果From Survivor空间也被填满就触发Minor GC,标记还存活的对象,并将这些对象存入To Survivo...
  • caicaixifan
  • caicaixifan
  • 2016年08月03日 16:11
  • 313

java的四种引用方式,以及垃圾回收器参数打印设置几种方式

技术点来自javase的java引用类型,jvm中垃圾回收的远离。 jdk1.0版本: 引用的集成体系:                              Reference        ...
  • fengchao2016
  • fengchao2016
  • 2016年10月14日 16:37
  • 814

JAVA的堆栈和内存、垃圾回收解说

1.有关java健壮性特点的真相 很多书上都说java健壮性的特点是因为java使用数组代替了c++的指针;c++最令人头痛的问题就是内存问题,java的健壮性使编程人员不用再考虑内存的问题;这种观...
  • tianyazaiheruan
  • tianyazaiheruan
  • 2014年01月21日 18:44
  • 3186

Java和C++的主要区别以及Java垃圾回收机制

Java和C++的主要区别: 1.指针  JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统...
  • ye_123
  • ye_123
  • 2015年08月12日 19:23
  • 623

java垃圾回收机制和finalize()方法

一、java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。        (1).对象不一定会被回收。        (2).垃圾回收不是析构函...
  • lurao
  • lurao
  • 2016年04月23日 11:43
  • 1988

管理Java垃圾回收的五个建议

本文作者是Niv Steingarten,是Takipi 的联合创始人,热衷于编写优雅简洁的代码。作者通过对垃圾收集器的介绍和梳理,在管理垃圾回收方面提出了五个建议,降低收集器开销,帮助大家进一步提升...
  • wangpeng198688
  • wangpeng198688
  • 2016年03月23日 17:08
  • 5733

JAVA分代垃圾回收机制

虚拟机中的共划分为三个代:年轻代(Young Generation)、年老点(Old Generation)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信...
  • achuo
  • achuo
  • 2015年04月24日 18:15
  • 1122
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中的垃圾回收
举报原因:
原因补充:

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