比如RS打开,然后不写RS.CLOSE,直接写RS=null会不会造成内存泄露??
个人觉得不会,个人对内存泄露理解是
1.在JAVA中:比如创建对象1,对象2
对象2=对象1;
对象1=null;
GC()是不会释放对象1的内存的,这叫内存泄露.
同理在C++中要DELETE对象1,必须先把对象2指向别的地方,否则出错.如果大家觉得RS不关闭会,请说下原理好吗?
个人觉得不会,个人对内存泄露理解是
1.在JAVA中:比如创建对象1,对象2
对象2=对象1;
对象1=null;
GC()是不会释放对象1的内存的,这叫内存泄露.
同理在C++中要DELETE对象1,必须先把对象2指向别的地方,否则出错.如果大家觉得RS不关闭会,请说下原理好吗?
对象1=null;上面这样的说法有问题。
///////////////////////
String str; //定义的是一个String类的句柄,也叫引用。
str="aaa"; //是将str变量指向"aaa"这个String类实例。java的特色垃圾回收机制,会自动扫描不在被使用的堆区对象空间,然后回收。
所以不需要通过C++里面的delete来释放对象空间。
还有请你先考虑好了再回答,垃圾回收的到底是可达的还是不可达的对象.
不要懂了点皮毛就乱说.
非常容易造成内存泄漏!
不知道大家有没有碰到过outofmemoryexception
具体到这个例子则不存在内存泄露,GC 要回收对象2, 对象1 不能回收,因为持有对象2的引用变量现在持有对象1. w_zforever 说的没错, 在java 中只能通过操纵引用来间接地操纵对象.不可能
对象1 = 对象2
不要把话题扯开啊
现实中也是这样。java的内存泄漏不是罕见,在大的项目中非常常见,而且极难定位。java语言的这种自动垃圾回收的特性优缺点各占50%,算不上是一种优秀的特性。