文章詳情頁
關(guān)于Java垃圾回收問題
瀏覽:112日期:2023-12-17 10:06:52
問題描述
循環(huán)中的變量在每次循環(huán)后都會被回收嗎
比如
for (int i=0;i<1000000;i++){ Date date=new Date(); }
這個date沒有被引用,這樣會被垃圾回收嗎? 如果創(chuàng)建對象被引用,結(jié)果又是怎樣的了?
問題解答
回答1:java的GC有YGC和FGC。你這里沒有被引用的date對象一定會被回收,但不是在每次循環(huán)結(jié)束后。GC的時機和你的代碼執(zhí)行沒有必然聯(lián)系。相關(guān)知識,你可以baidu下java GC
回答2:這個問題的答案在于,jvm的垃圾回收機制在什么情況下會進行垃圾回收。局部變量的作用于是{},也就是說,date沒有被引用了,當(dāng)執(zhí)行垃圾回收動作的時候,這里的date就會被回收。
回答3:new一個對象,那么就是存放在堆中,而且剛創(chuàng)建的對象存放在eden區(qū)中,只有當(dāng)eden區(qū)滿了,才會觸發(fā)Monitor GC進行回收。你可以在運行參數(shù)中添加-XX:+PrintGCDetails觀察GC回收的情況。
標簽:
java
相關(guān)文章:
1. mysql - jdbc的問題2. 視頻文件不能播放,怎么辦?3. mysql - 把一個表中的數(shù)據(jù)count更新到另一個表里?4. mysql - 如何減少使用或者不用LEFT JOIN查詢?5. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處6. javascript - 微信網(wǎng)頁開發(fā)從菜單進入頁面后,按返回鍵沒有關(guān)閉瀏覽器而是刷新當(dāng)前頁面,求解決?7. node.js - nodejs開發(fā)中常用的連接mysql的庫8. mysql replace 死鎖9. 老師您的微信號是多少?10. mysql - 字符串根據(jù)字典替換
排行榜

熱門標簽