文章詳情頁
關(guān)于Java垃圾回收問題
瀏覽:131日期:2023-12-17 10:06:52
問題描述
循環(huán)中的變量在每次循環(huán)后都會被回收嗎
比如
for (int i=0;i<1000000;i++){ Date date=new Date(); }
這個(gè)date沒有被引用,這樣會被垃圾回收嗎? 如果創(chuàng)建對象被引用,結(jié)果又是怎樣的了?
問題解答
回答1:java的GC有YGC和FGC。你這里沒有被引用的date對象一定會被回收,但不是在每次循環(huán)結(jié)束后。GC的時(shí)機(jī)和你的代碼執(zhí)行沒有必然聯(lián)系。相關(guān)知識,你可以baidu下java GC
回答2:這個(gè)問題的答案在于,jvm的垃圾回收機(jī)制在什么情況下會進(jìn)行垃圾回收。局部變量的作用于是{},也就是說,date沒有被引用了,當(dāng)執(zhí)行垃圾回收動作的時(shí)候,這里的date就會被回收。
回答3:new一個(gè)對象,那么就是存放在堆中,而且剛創(chuàng)建的對象存放在eden區(qū)中,只有當(dāng)eden區(qū)滿了,才會觸發(fā)Monitor GC進(jìn)行回收。你可以在運(yùn)行參數(shù)中添加-XX:+PrintGCDetails觀察GC回收的情況。
標(biāo)簽:
java
上一條:一個(gè)阿里云的服務(wù)器,可以部署兩個(gè)javaweb項(xiàng)目嗎?兩個(gè)項(xiàng)目域名不同下一條:java - jdbcTemplate支持復(fù)雜對象的映射嗎?
相關(guān)文章:
1. css - 如何把一個(gè)視圖放在左浮動定位的視圖的上面?2. python的正則怎么同時(shí)匹配兩個(gè)不同結(jié)果?3. php多任務(wù)倒計(jì)時(shí)求助4. javascript - axios請求回來的數(shù)據(jù)組件無法進(jìn)行綁定渲染5. javascript - vue中怎么使用原生js插件6. MySQL的聯(lián)合查詢[union]有什么實(shí)際的用處7. javascript - jquery怎么讓a標(biāo)簽跳轉(zhuǎn)后保持tab的樣式8. css - 子元素跑到父元素外面9. javascript - 小demo:請教怎么做出類似于水滴不斷擴(kuò)張的效果?10. javascript - 請問下面代碼中的...是擴(kuò)展運(yùn)算符還是操作運(yùn)算符?這樣寫是什么意思?
排行榜

熱門標(biāo)簽