我定义一个Vector ,当我不在使用这个Vector时
下面那个方法好,为啥?
1。
vector.clear();
vector = null;
2.
vector = null;
问题补充
我知道这个方法。
我的意思是说在vector =null,之间有没有必要把他给clear().
大多数情况下如果我们只是不再使用对象是,可以不管,交给java的垃圾回收机制来释放对象,当然,如果显示的声明ector = null,就是明确的告诉垃圾回收机制,我不用了,你可以回收了,vector.clear()不需要。用clear方法的情况是你还想用clear只是想让它的大小为0的时候。
[code="java"] public void clear() {
removeAllElements();
}[/code]
[code="java"]
public synchronized void removeAllElements() {
modCount++;
// Let gc do its work
for (int i = 0; i < elementCount; i++)
elementData[i] = null;
elementCount = 0;
}[/code]
看样子好像是用一个数组
clear把里面所有的元素都清空
而且设置size=0
vector = null; 后
系统在运行gc后就会把vector回收
是这么个意思不?
其实可以这么理解 如果你以后还有用这个vector 那就把他clear
如果你不用了 直接回收
都不用clear
直接=null
不是很明白 听大牛解释解释
JAVA还用你这么干……那他干脆和C++一样给你个析构方法不就得了……
你看那些大师的源代码哪个用了XX=NULL来释放内存……反正我是没见过这种写法。
按照thinking in java中的观点,把内存回收的任务交给回收机制,回收机制我们用任何手段都是无法控制的,当然某些资源如果需要释放,如IO、数据库连接,这些是需要自己写释放资源的代码的。
当然需要用=Null来释放。不然就会很容易造成Java内存泄漏。Java只会回收无任何引用的对象。如果对象有引用存在,那么就不会被回收。所以在对象用完后,需要用引用为Null的方法销毁。当然,很多时候我们建立的临时变量在生命周期完成后被自动销毁了,但是还有一些全局的引用存在,必须手动销毁。
没有必要把它clear()
必要的时候可以vector = null,不过通常也不用,现代的JVM GC已经很强了
[quote]我的意思是说在vector =null,之间有没有必要把他给clear(). [/quote]
把vector =null就可以了,系统会自动回收的,不用调用clear();
非常明确的说明是,没有必要clear