比如RS打开,然后不写RS.CLOSE,直接写RS=null会不会造成内存泄露??
个人觉得不会,个人对内存泄露理解是
1.在JAVA中:比如创建对象1,对象2
对象2=对象1;
对象1=null;
GC()是不会释放对象1的内存的,这叫内存泄露.
同理在C++中要DELETE对象1,必须先把对象2指向别的地方,否则出错.如果大家觉得RS不关闭会,请说下原理好吗?

解决方案 »

  1.   

    对象2=对象1;
    对象1=null;上面这样的说法有问题。
    ///////////////////////
    String str; //定义的是一个String类的句柄,也叫引用。
    str="aaa"; //是将str变量指向"aaa"这个String类实例。java的特色垃圾回收机制,会自动扫描不在被使用的堆区对象空间,然后回收。
    所以不需要通过C++里面的delete来释放对象空间。
      

  2.   

    怎么有问题了?你没看见我先说(1.在JAVA中:比如创建对象1,对象2)这句话了吗?
    还有请你先考虑好了再回答,垃圾回收的到底是可达的还是不可达的对象.
    不要懂了点皮毛就乱说.
      

  3.   

    java的垃圾回收很弱智!
    非常容易造成内存泄漏!
    不知道大家有没有碰到过outofmemoryexception
      

  4.   

    我写的程序没有 out of memory exception,使用别人 的程序时,碰到过。也许我得程序太简单了!
      

  5.   

    jvm自己回收内存,不会有什么泄露问题。只有c++那样的语言才有可能
      

  6.   

    rs底层会开辟一个流,流会被JVM的底层持有。所以,一定要关闭rs,这样才能关闭流
      

  7.   

    Java存在内存泄露,但是非常罕见. 具体例子可参见Effective Java这本书.
    具体到这个例子则不存在内存泄露,GC 要回收对象2, 对象1 不能回收,因为持有对象2的引用变量现在持有对象1. w_zforever 说的没错, 在java 中只能通过操纵引用来间接地操纵对象.不可能
    对象1 = 对象2
      

  8.   

    我意思是叫大家讨论,不关闭流直接把"流至NULL"会不会造成内存泄露?
    不要把话题扯开啊
      

  9.   

    不知道大家有没有读过java编程思想这本书,该书就在垃圾回收这一节说过,如果一堆对象连环引用,你不去手工破坏它们之间的连环引用的关系,这样java虚拟机永远也不能回收它们。
    现实中也是这样。java的内存泄漏不是罕见,在大的项目中非常常见,而且极难定位。java语言的这种自动垃圾回收的特性优缺点各占50%,算不上是一种优秀的特性。