java對象為null啥意思 Java對象使用后設(shè)置為null會減少內(nèi)存占用嗎?
Java對象使用后設(shè)置為null會減少內(nèi)存占用嗎?首先科普一下,Java對象是引用變型的,它會用兩種內(nèi)存區(qū):堆內(nèi)存、棧內(nèi)存。Java對象是存儲在堆內(nèi)存中的,而對此對象的引用(理解為變量)存儲在棧內(nèi)存中
Java對象使用后設(shè)置為null會減少內(nèi)存占用嗎?
首先科普一下,Java對象是引用變型的,它會用兩種內(nèi)存區(qū):堆內(nèi)存、棧內(nèi)存。Java對象是存儲在堆內(nèi)存中的,而對此對象的引用(理解為變量)存儲在棧內(nèi)存中。
比如:String str=new String("字符串") 這行代碼用的是兩塊內(nèi)存,new String("字符串") 存在堆內(nèi)存中,str 變量存儲在棧內(nèi)存中。
當(dāng)我們設(shè)置對象為 null 后(即:str=null),此時str變量與堆內(nèi)存中的數(shù)據(jù)就斷開聯(lián)系了,GC算法會在必要時回收 str 及堆內(nèi)存中的對象,但這個GC任何回收我們是無法干預(yù)的。
總結(jié)說就是:Java對象在使用后設(shè)置為null,在GC對此對象回收后,內(nèi)存會相應(yīng)減少,但不是說將一個對象引用設(shè)置為null后內(nèi)存就立馬釋放了。GC會在合適的時間來回收垃圾數(shù)據(jù)。
java怎么判斷對象為null?
public static void main(String[] args) {//person是對象newPerson的引用Person person = new Person()//判斷是否為空if(person==null){//如果為空 打印對象為空System.out.println("對象為空")}else{//如果為不為空 打印personSystem.out.println("對象為" person)}}