文章詳情頁
關于Java垃圾回收問題
瀏覽:159日期:2023-12-17 10:06:52
問題描述
循環中的變量在每次循環后都會被回收嗎
比如
for (int i=0;i<1000000;i++){ Date date=new Date(); }
這個date沒有被引用,這樣會被垃圾回收嗎? 如果創建對象被引用,結果又是怎樣的了?
問題解答
回答1:java的GC有YGC和FGC。你這里沒有被引用的date對象一定會被回收,但不是在每次循環結束后。GC的時機和你的代碼執行沒有必然聯系。相關知識,你可以baidu下java GC
回答2:這個問題的答案在于,jvm的垃圾回收機制在什么情況下會進行垃圾回收。局部變量的作用于是{},也就是說,date沒有被引用了,當執行垃圾回收動作的時候,這里的date就會被回收。
回答3:new一個對象,那么就是存放在堆中,而且剛創建的對象存放在eden區中,只有當eden區滿了,才會觸發Monitor GC進行回收。你可以在運行參數中添加-XX:+PrintGCDetails觀察GC回收的情況。
標簽:
java
相關文章:
1. mysql - select查詢多個紀錄的條件怎么寫2. mysql 獲取時間函數unix_timestamp 問題?3. Mysql 關于 FOUND_ROWS() 和 ROW_COUNT() 函數4. 這段代碼是獲取百度收錄量的!需要怎么設置才能獲取百度快照旁邊的網址呢?5. dockerfile - 我用docker build的時候出現下邊問題 麻煩幫我看一下6. html5 - 基于vue的圖片查看,如何實現?7. java - android使用websocket無法訪問cookie。8. docker綁定了nginx端口 外部訪問不到9. javascript - es6數值解構Number.prototype.toString is not generic10. vue.js - vue 打包后 nginx 服務端API請求跨域問題無法解決。
排行榜
