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

我的翻译 专栏收录该内容
17 篇文章 0 订阅

提高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方法可以帮助确保垃圾收集及时的完成。

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值