Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
提高java程序性能之垃圾收集

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

提高java程序性能之垃圾收集

Java使用垃圾收集或者说回收不再使用的内存的技术而不需要你明确的管理储存。垃圾收集是自动的,但是在有些情况下可以有办法辅助这个过程。想像一下你在管理一个对象引用的堆栈:

 

public class Stack {

  private static final int MAXLEN = 10;

  private Object stk[] = new Object[MAXLEN];

  private int stkp = -1;

 

  public void push(Object p) {stk[++stkp] = p;}

 

  public Object pop() {return stk[stkp--];}

}

 

现在考虑堆栈中有两个元素,而且你从中取出一个,在这个时候,堆栈中的 stk[0] 将保存一个有效的元素,而 stk[1] 保存的是刚刚取出的元素。也就是stk[1] 是一个对象的引用,它可能是任何对象的引用,包括可能是一个大的包含上千个字节的数据结构的引用。在这个情况下,这个结构不能被垃圾收集掉,即使它可能永远都不再被使用。

为了纠正这个问题,可以像下面那样重写pop方法:

 

     public Object pop()

     {

         Object p = stk[stkp];

         stk[stkp--] = null;

         return p;

     }

 

你没有使该对象自身无效,而仅仅是对它的一个引用不再有效。堆栈对象自身可能还有很长的生存期,而像那样重写pop方法可以帮助确保垃圾收集及时的完成。

 




相关文章

相关软件