關(guān)于Java垃圾回收問(wèn)題
問(wèn)題描述
循環(huán)中的變量在每次循環(huán)后都會(huì)被回收嗎
比如
for (int i=0;i<1000000;i++){ Date date=new Date(); }
這個(gè)date沒(méi)有被引用,這樣會(huì)被垃圾回收嗎? 如果創(chuàng)建對(duì)象被引用,結(jié)果又是怎樣的了?
問(wèn)題解答
回答1:java的GC有YGC和FGC。你這里沒(méi)有被引用的date對(duì)象一定會(huì)被回收,但不是在每次循環(huán)結(jié)束后。GC的時(shí)機(jī)和你的代碼執(zhí)行沒(méi)有必然聯(lián)系。相關(guān)知識(shí),你可以baidu下java GC
回答2:這個(gè)問(wèn)題的答案在于,jvm的垃圾回收機(jī)制在什么情況下會(huì)進(jìn)行垃圾回收。局部變量的作用于是{},也就是說(shuō),date沒(méi)有被引用了,當(dāng)執(zhí)行垃圾回收動(dòng)作的時(shí)候,這里的date就會(huì)被回收。
回答3:new一個(gè)對(duì)象,那么就是存放在堆中,而且剛創(chuàng)建的對(duì)象存放在eden區(qū)中,只有當(dāng)eden區(qū)滿了,才會(huì)觸發(fā)Monitor GC進(jìn)行回收。你可以在運(yùn)行參數(shù)中添加-XX:+PrintGCDetails觀察GC回收的情況。
相關(guān)文章:
1. node.js - ionic2 創(chuàng)建項(xiàng)目 ionic server 報(bào)這個(gè)錯(cuò) 有朋友可以幫忙看看嗎!2. android - 在搜索時(shí)如何隱藏底部BottomNavigationBar3. 關(guān)于Mysql聯(lián)合查詢4. javascript - 在top.jsp點(diǎn)擊退出按鈕后,right.jsp進(jìn)行頁(yè)面跳轉(zhuǎn),跳轉(zhuǎn)到login.jsp5. java - 白盒加密源碼或者庫(kù)6. python - 關(guān)于beautifulsoup獲取文檔內(nèi)容7. mysql里的大表用mycat做水平拆分,是不是要先手動(dòng)分好,再配置mycat8. android - WebView偶爾無(wú)法加載,沒(méi)有發(fā)起請(qǐng)求9. javascript - 這種布局該怎么實(shí)現(xiàn)最自然?10. linux - 下面這條shell命令怎么用python寫(xiě)啊?
