|
垃圾收集器(Garbage Collector,GC)对Java程序员来说,基本 上是透明的,但是一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议,从GC角度提高Java程序的性能。 参考资料1 )。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。但是,为了保证GC能够在不同平台实现的问题,Java规范对GC的很多行为都没有进行严格的规定。例如,对于采用什么类型的回收算法、什么时候进行回收等重要问题都没有明确的规定。因此,不同的JVM的实现者往往有不同的实现算法。这也给Java程序员的开发带来行多不确定性。本文研究了几个与GC工作相关的问题,努力减少这种不确定性给Java程序带来的负面影响。
参考资料4。
参考资料4;
Phantom引用的用途较少,主要用于辅助finalize函数的使用。Phantom对象指一些对象,它们执行完了finalize函数,并为不可达对象,但是它们还没有被GC回收。这种对象可以辅助finalize进行一些后期的回收工作,我们通过覆盖Reference的clear()方法,增强资源回收机制的灵活性。
http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/index.shtml Y. Srinivas Ramakrishna "Atuomatic Memory Management in the Java HotSpot Virtual Machine",此文章JavaOne2002的演讲材料, http://java.sun.com/javaone
Monica Pawlan "Reference Objects and Garbage Collector" 此文章为JDC的文章,可在 http://developer.java.sun.com/上找到
Bill Venners Chapter 9 of "Inside the Java 2 Virtual Machine" http://www.artima.com/insidejvm/ed2/ch09GarbageCollectionPrint.html
Sun Microsystems, "Java Language Specification, Second Version"
</OL>
yeekee@sina.com
[/td][/tr][/table]
[img=100%,5 alt=]http://www.ibm.com/i/c.gif[/img] |
| [img=4,5 alt=]http://www.ibm.com/i/c.gif[/img] | 周欣,北京大学计算机系在读博士生,主要研究方向:程序理解、逆向工程及软件度量,联系方式 [email=zhouxin@sei.pku.edu.cn?cc=zhouxin@sei.pku.edu.cn]zhouxin@sei.pku.edu.cn[/email]。
|
源自:http://www-128.ibm.com/developerworks/cn/java/l-JavaMemoryLeak2/index.html |
|