对象清空的问题

我定义一个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