日期:2014-05-20  浏览次数:20726 次

求助一个java垃圾回收问题
例:
Class Test {
ResultSet rs=null;
   
   private ResultSet getResuluSet(){
    this.rs=new ResultSet();
     re=..............;//省略内容
    ResultSet rsTemp=new ResultSet();
     rwTemp=.............//省略内容
    //这里大家认采用返回this.rs,还是返回来rsTemp;来得好
    return this.rs;
    return rsTemp;
      }
}


根据编程习惯,我一般,会在方法内部重新定义一个rsTemp,然后返回来rsTemp,这样看起来很清爽.不需要定义一个成员变量在那里.
但就有一个问题, 如果我还有另外一个方法,还要返回一个ResulSet对象,是不是又在那个方法重新定义一个rsTemp对象呢.
大家认为就一个成员变量rs,所有的方法都是对这个rs操作好呢,还是每个方法都定义一个rsTemp好

java里是不是方法的局部变量一执行完成后就会回收.而成员变量不回收.

java?垃圾回收

------解决方案--------------------
说下我的见解:先回答你的问题:在java中,对一个方法的调用,Jvm是将方法以栈帧的方式压入栈中,当执行完成后,就将栈帧弹出栈。而在方法中的定义的变量或引用型变量,它们的生存时间都是只依赖于所在的方法的,当这个方法被执行完,那么方法内的所有的东西的生存时间都结束了,栈会将整个方法所有的东西都清除。、
而对于成员变量,只有当栈中没有引用型变量指向这个成员变量所属的对象的堆内存地址时,那么垃圾回收线程就可能随时将它回收,但不能判断出是何时进行的。

是将引用型变量定认在类成员位置上,还是在一个方法中,具体的就得看情况了:当你频繁的对这个引用型变量进行调用时,建议在成员位置上对其new,这样jvm就不会因为其在方法中new,而频繁的对其开辟空间和释放空间了。
希望对你有用!