其他回答
- public void clear() {
- removeAllElements();
- }
public void clear() {removeAllElements();}
- public synchronized void removeAllElements() {
- modCount++;
-
- for (int i = 0; i < elementCount; i++)
- elementData[i] = null;
-
- elementCount = 0;
- }
public synchronized void removeAllElements() {modCount++;// Let gc do its workfor (int i = 0; i < elementCount; i++)elementData[i] = null;elementCount = 0;}
看樣子好像是用一個(gè)數(shù)組
clear把里面所有的元素都清空
而且設(shè)置size=0
vector = null; 后
系統(tǒng)在運(yùn)行g(shù)c后就會(huì)把vector回收
是這么個(gè)意思不?
其實(shí)可以這么理解 如果你以后還有用這個(gè)vector 那就把他clear
如果你不用了 直接回收
都不用clear
直接=null
不是很明白 聽大牛解釋解釋
JAVA還用你這么干……那他干脆和C++一樣給你個(gè)析構(gòu)方法不就得了……
你看那些大師的源代碼哪個(gè)用了XX=NULL來釋放內(nèi)存……反正我是沒見過這種寫法。
按照thinking in java中的觀點(diǎn),把內(nèi)存回收的任務(wù)交給回收機(jī)制,回收機(jī)制我們用任何手段都是無法控制的,當(dāng)然某些資源如果需要釋放,如IO、數(shù)據(jù)庫連接,這些是需要自己寫釋放資源的代碼的。
當(dāng)然需要用=Null來釋放。不然就會(huì)很容易造成Java內(nèi)存泄漏。Java只會(huì)回收無任何引用的對象。如果對象有引用存在,那么就不會(huì)被回收。所以在對象用完后,需要用引用為Null的方法銷毀。當(dāng)然,很多時(shí)候我們建立的臨時(shí)變量在生命周期完成后被自動(dòng)銷毀了,但是還有一些全局的引用存在,必須手動(dòng)銷毀。
沒有必要把它c(diǎn)lear()
jones (架構(gòu)師) 2008-11-11
必要的時(shí)候可以vector = null,不過通常也不用,現(xiàn)代的JVM GC已經(jīng)很強(qiáng)了
jones (架構(gòu)師) 2008-11-11
引用
我的意思是說在vector =null,之間有沒有必要把他給clear().
把vector =null就可以了,系統(tǒng)會(huì)自動(dòng)回收的,不用調(diào)用clear();