對象的方法不占用內(nèi)存 Java對象使用后設(shè)置為null會減少內(nèi)存占用嗎?
Java對象使用后設(shè)置為null會減少內(nèi)存占用嗎?首先,Java對象是引用變量,它使用兩種內(nèi)存區(qū)域:堆內(nèi)存和堆棧內(nèi)存。Java對象存儲在堆內(nèi)存中,對它們的引用(理解為變量)存儲在堆棧內(nèi)存中。例如,st
Java對象使用后設(shè)置為null會減少內(nèi)存占用嗎?
首先,Java對象是引用變量,它使用兩種內(nèi)存區(qū)域:堆內(nèi)存和堆棧內(nèi)存。Java對象存儲在堆內(nèi)存中,對它們的引用(理解為變量)存儲在堆棧內(nèi)存中。
例如,string STR=new string(“string”)使用兩段內(nèi)存,new string(“string”)存儲在堆內(nèi)存中,STR變量存儲在堆棧內(nèi)存中。
當我們將對象設(shè)置為null(即:STR=null)時,STR變量與堆內(nèi)存中的數(shù)據(jù)斷開連接。GC算法會在必要時回收STR和堆內(nèi)存中的對象,但是我們不能干預(yù)GC的任何回收。
.GC將在正確的時間回收垃圾數(shù)據(jù)。
關(guān)于對象成員占用內(nèi)存的說法哪個正確?
關(guān)于對象成員占用的內(nèi)存,以下哪項陳述是正確的?A.同一類的對象共享相同的內(nèi)存;B.同一類的對象使用不同的內(nèi)存段,但靜態(tài)成員共享相同的內(nèi)存空間;C.對象的方法不占用內(nèi)存D.以上都不是真的
對于一般類(非靜態(tài)),當定義一個類而不創(chuàng)建一個對象時,該類的所有成員類(包括變量和函數(shù))占用內(nèi)存空間(確切地說,它們占用指令代碼區(qū)),但不占用堆棧空間
在創(chuàng)建對象時,它們會根據(jù)對象的類型占用堆??臻g(在傳統(tǒng)模式下創(chuàng)建對象會節(jié)省內(nèi)存空間)占用堆??臻g,使用引用在新模式下創(chuàng)建對象將占用堆空間,引用將保存在堆棧中)
對于靜態(tài)類,靜態(tài)類不能實例化和創(chuàng)建對象。所有成員都是靜態(tài)成員,它們也需要占用內(nèi)存空間,但它們不在堆棧中,而是在內(nèi)存的靜態(tài)/全局區(qū)域中(該區(qū)域用于存儲所有全局成員和靜態(tài)成員)