關(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 - gulp文件監(jiān)聽(tīng)的問(wèn)題2. node.js - node 客戶(hù)端socket一直報(bào)錯(cuò)Error: read ECONNRESET,用php的socket沒(méi)問(wèn)題哈。。3. python - 模擬滑動(dòng)驗(yàn)證碼,有源碼,求解4. npm鏡像站全新上線5. mySql排序,序號(hào)6. tp6表單令牌7. 老哥們求助啊8. javascript - vue-router怎么不能實(shí)現(xiàn)跳轉(zhuǎn)呢9. html5 - angularjs中外部模版加載無(wú)法使用10. css3 - 請(qǐng)問(wèn)一下在移動(dòng)端CSS布局布局中通常需要用到哪些元素,屬性?
