通过reference不能访问它所指向对象范围外的内存

解决方案 »

  1.   

    当释放了引用本身,但是对象还是可达的时候,就引起了内存泄漏Vector v=new Vector(10);
    for (int i=1;i<100; i++)
    {
    Object o=new Object();
    v.add(o);
    o=null;
    }
    //此时,所有的Object对象都没有被释放,因为变量v引用这些对象。
    没有特别好的方法防止,可以通过一些工具来监测java的内存泄漏
      

  2.   

    这不是内存泄漏!
    Object o=new Object();
    v.add(o);
    此时新产生的对象通过o与v(v中的一个成员变量也是它的引用)都可以访问当释放了引用本身(所有引用)即o = null; v = null;如果还能访问,那才是内存泄漏。
      

  3.   

    同意
    如何才能用java实现内存泄漏
      

  4.   

    关键的问题不是你是不是能到达,而是java虚拟机对每一块分配的内存都有跟踪,java虚拟机会解决掉,不用你管
    否则不如回去用C++好了
      

  5.   

    所谓的java的内存泄漏是那些你忘记了的对象,比如一个对象被某个列表保存了句柄,你不断的加,由于这个引用的存在,所以一直不释放。java的内存泄漏查来更复杂。
      

  6.   

    我想java所以不让用户使用指针也就是为了这点而考虑的
      

  7.   

    不过只要你的程序一退出这块内存就被释放了。不会像C那样,除非重启机器才能释放内存
    再说了,如果用C编程内存泄漏还有情可原,因为需要注意的地方太多了,但用java还要讨论泄漏内存,就未免太。。
    “比如一个对象被某个列表保存了句柄,你不断的加,由于这个引用的存在,所以一直不释放”,你编程也太不负责了吧,这个好像要故意做才会做到哦。