[英]Java : What is Garbage Collector collecting?
我是GC的新手,我想知道垃圾回收器除了不再被任何變量引用的引用之外還收集什么? 以下是我要檢查的列表
GC不會收集任何引用,它只是釋放不再可訪問的對象(堆上的內存)。
靜態是特殊的內存位置,並且與類/類加載器關聯。 如果未部署class / classloader,則靜態內容將從內存中刪除。
如果原始類型與對象(類變量)相關聯,那么當對象不可訪問時,它們將被GC化。
如果是局部變量/參數變量,則它們將在堆棧上,因此一旦方法執行完成,便將其回收。
只有對象(實例)才能收集垃圾,而沒有其他東西。
關鍵字static
與垃圾回收無關。
垃圾收集僅適用於對象。
•原始類型(int,double,float,char ....)是否獲得GC-ed? -是原始類型對象嗎? 沒有。
•靜態變量是否得到GC檢驗? -是變量對象,是的。
•最終變量是否經過GC檢驗(我認為由於將其標記為不可變的,因此沒有什么可收集的)? -不,他們將接受GC培訓
•是否所有方法(靜態和非靜態)都經過GC檢驗? -方法和類defs會占用內存,但不會占用由GC管理的內存,這取決於最終將隨意創建和銷毀的JVM類型。
•線程是否經過GC編輯? -是的,線程是對象,因此它們經過GC處理。
垃圾收集器僅在堆上工作。 鑒於此,您可以排除靜態變量。
基本類型(int,double,float,char ....)是否得到GC-ed? 如果它們所屬的對象被GC檢驗,則它們被GC檢驗。
靜態變量會被GC編輯嗎? 沒有
最終變量是否經過GC檢驗(我認為,因為它被標記為不可變的,所以沒有什么可收集的)? 如果它們所屬的對象被GC檢驗,則它們被GC檢驗。
是否所有方法(靜態方法和非靜態方法)都經過GC處理? 這沒有多大意義
線程是否經過GC編輯? 如果它們是不再引用的對象,是
垃圾回收確實對在堆上分配的對象起作用,這些對象是通過new
創建的所有對象。
new Integer(..)
管理,則可以對它們進行GC處理,但是我不確定此處是否裝箱和裝箱,所以我說不,因為JVM有特定的指令來管理它們 run()
方法的對象中,因此可以對其進行GC GC僅收集程序中沒有任何引用的內存空間,因此按定義收集GC不會發生。 可以收集可以引用對象並可以更改其需求的任何變量,因此可以在某些情況下收集靜態變量,但最終不能! 我無法想象您用GC-ed方法表示什么。在一般的回答中,我應該說方法不是要進行GC-ed的對象狀態的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.