只要在something方法中没有会引起内存泄漏的语句(如数据库连接未释放,Vector里边的对象未释放前直接释放Vector对象等)就不会

解决方案 »

  1.   

    因为ver = new b(),原来ver指向的对象就会被gc了
    是不是这样?
      

  2.   

    java 语言里面一般不会存在内存泄露的问题,除非你调用一些自己写的本地方法。
    如果只使用java语言,jvm会帮你控制内存,最多有时候会产生内存溢出。
    按你的方法,一般不会产生内存溢出,但如果你的f()方法调用的实在频繁,而且你的b类
    又是一个很复杂的类,也许会导致垃圾回收来不及回收你上次生成的 b 实例,然后
    会产生内存溢出。
      

  3.   

    所谓的内存泄漏是指无法回收的内存,这在JAVA中是不会出现的!JAVA的内存管理功能非常强,因为垃圾回收机制会在应该运行的时侯运行,也即当你的物理内存或虚拟内存不多的时侯,垃圾回收机制肯定会运行来回收那些无引用的对象.除非你频繁的创建对象,而每个对象又都有引用指向它不能被回收才会出现内存耗遏的情况!也不是内存溢出,因为内存溢出指的是没有临界检查导致的内存区非法读写!而JAVA的临界区检查非常强,即使是内存溢出也是在JVM中出现,操作系统中的内存溢出不可能出现.
      

  4.   

    我认为不会引起内存泄漏!
        ver是一个方法,即f,内部的类的对象变量。它会在此方法调用结束释放ver占用的资源。
      

  5.   

    再多说一点,ver的生存期只在f方法中。
      

  6.   

    to:
    Think2Exist(郁虻) 
    blackhost(剑心)   "ver的生存期只在f方法中。"这种讲法是不是对呢?我们看个例子:
     
    class Test
    {
       String names[]=null;
       public Test()
          {
             names=new String[3];
             namse[0]="castle";
             names[1]="video";
           }
        public displayAll()
           {
              for(i=0;i<names.length;i++)
                  System.out.println(names[i]);
            }    
    }这程序是没有错的,所以names的生存期不只在Test()中。为什么呢,因为我们在函数推出的时候已经将这块区域交给了names。此致
      

  7.   

    谁说ver的生存期只在f()中
    只要是全局变量就在整个类中存在