文章詳情頁
關(guān)于Java垃圾回收問題
瀏覽:148日期: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í)行垃圾回收動(dòng)作的時(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. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?2. sql語句 - mysql中關(guān)聯(lián)表查詢問題3. javascript - iframe 為什么加載網(wǎng)頁的時(shí)候滾動(dòng)條這樣顯示?4. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風(fēng)格檢查怎么辦。。。5. javascript - [js]為什么畫布里不出現(xiàn)圖片呢?在線等6. javascript - 有什么比較好的網(wǎng)頁版shell前端組件?7. javascript - 求解答:實(shí)例對象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?8. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無論屏幕和分辨率怎么變化;div位置始終不變9. css - chrome下a標(biāo)簽嵌套img 顯示會多個(gè)小箭頭?10. html - vue項(xiàng)目中用到了elementUI問題
排行榜

熱門標(biāo)簽