知识大全 消除对过期对象的引用

Posted

篇首语:教书育人是教师的天职,既有苦,也有乐。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 消除对过期对象的引用相关的知识,希望对你有一定的参考价值。

  Java比c++方便的一点就是java有自己的垃圾收集机制 可以自动帮你收集垃圾 但是 这并非意味着使用java我们就不需要考虑内存管理了   这一点相信很多java程序员都是知道的 就是当一个对象我们决定不再使用的时候 最好可以手动设置它为null 特别是这个object比较耗费资源的时候   Effective java上的例子   import java util *;    // Can you spot the memory leak ?  public class Stack     private Object[] elements;    private int size = ;      public Stack(int initialCapacity)       this elements = new Object[initialCapacity];          public void push(Object e)       ensureCapacity();      elements[size++] = e;          public Object pop()       if (size== )        throw new EmptyStackException();      Object result = elements[ size];      elements[size] = null; // Eliminate obsolete reference      return result;          /**     * Ensure space for at least one more element roughly     * doubling the capacity each time the array needs to grow      */    private void ensureCapacity()       if (elements length == size)         Object[] oldElements = elements;        elements = new Object[ * elements length + ];        System arraycopy(oldElements elements size);                public static void main(String[] args)       Stack s = new Stack( );      for (int i= ; i<args length; i++)        s push(args[i]);      for (int i= ; i<args length; i++)        System out println(s pop());          这是一个简单的实现堆栈数据结构的程序   这个程序的编译和测试是没有问题的 它的问题存在哪里呢?  在这个程序里 如果这个堆栈先push然后再pop的话 那么弹出来的对象不会被释放 因为栈内部维护着对这个对象永远都不会解除的引用   我们每次弹出一个对象 都要令element[size]=null;    总结 在拥有自动垃圾收集功能的语言里 我们要特别注意内存管理的问题 因为这个时候内存的溢出问题不会象c plus plus这些那么明显 我们要防范于未然 另外 根据的经验 inputstreamreader等文件读写类 我们要在set 他们为null的之前 close他们的连接 即调用in close() 然后再in=null;(这里in是一个inputstreamreader等) cha138/Article/program/Java/hx/201311/25514

相关参考

知识大全 对象引用是怎样严重影响垃圾收集器

  如果您认为Java游戏开发人员是Java编程世界的一级方程式赛车手那么您就会明白为什么他们会如此地重视程序的性能游戏开发人员几乎每天都要面对的性能问题往往超过了一般程序员考虑问题的范围哪里可以找到

知识大全 黑马程序员面向对象之多态

  多态可以理解为事物存在的多种体现形态  多态的体现  父类的引用指向了自己的子类对象  父类的引用也可以接收自己的子类对象  多态的前提  必须是类与类之间有关系要么继承要么实现  通常还有一个前

知识大全 浅谈网页中各种链接引用方法

  在网页中的引用(比如引用cssjsimg等对象)总的来说可以分为以下几种方式  viewsourceprint?<%第一种方法%>  <linkrel=stylesheettyp

知识大全 面向对象的一些术语精解

  多态一个对象变量可以引用多种实际类型的现象叫做多态(polymorphism)在java和c++语言中指的是可以用子类对象赋给父类对象说道多态就要说说覆蓋(overriding)覆蓋实际上指在同一

知识大全 浅谈“值类型”和“引用类型”

  工作已经有一年有余做项目的时侯经常碰到值类型和引用类型当时对这两个概念很难理解今闲暇之时翻看红皮书顿有所悟和大家分享一下  从概念上区分值类型直接存储其值引用类型存储对值的饮用按照存储位置上的不同

知识大全 车牌照是用暂住证办的,现在过期了对车牌有影响吗

车牌照是用暂住证办的,现在过期了对车牌有影响吗用居住证办的车牌照,但是居住证到期需不需要办理,不办居住证对车牌照有没有影响南京办理车牌之前办的暂住证,现在又办居住证办理车牌有影响吗8月份刚办的车牌,暂

知识大全 铁观音过期了还能喝吗

   铁观音过期了还能喝吗?  一般来说,铁观音茶叶如果过期了,如果没有进行处理的话,那就不建议喝了,因为过期的铁观音茶叶尽管对身体没有影响,但是已经

知识大全 引用 造型 protected和private的困惑

  或许大家java的多态问题对上溯下溯造型有了一定的概念对protected和private大家想必也很清楚但是这几个个结合在一起往往令人产生很多困惑在这里我举一个例子大家或许会发觉这篇文章对你来说

知识大全 改写equals的时候遵守约定

  在java里面objectequals()的概念是两个引用指向的是同一个对象即两者指向同一个对象才equals()但是也有特例比如说一些原始类型integerstring等属于值相等就是说值相等也

知识大全 在excel中,不是数据引用方式有A相对引用B交叉引用C绝对引用D混合引用

在excel中,不是数据引用方式有A相对引用B交叉引用C绝对引用D混合引用  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们