jvm引數
-verbose:gc
public
class localvartest
}
執行結果
[gc (system.gc()) 68872
k->66336
k(125952
k), 0.0014157 secs]
[full gc (system.gc()) 66336
k->66233
k(125952
k), 0.0056158 secs]
記憶體未釋放,因為在執行system.gc()時,變數placeholder 還在作用域內,所以未釋放
public
class localvartest
system.gc();
}}
[gc (system.gc()) 68872
k->66320
k(125952
k), 0.0012127 secs]
[full gc (system.gc()) 66320
k->66233
k(125952
k), 0.0059661 secs]
記憶體仍未釋放,其根本原因為:區域性變數表中的slot是否還存有源於placeholder陣列物件的引用。**雖然已經離開了作用域,但在此之後,沒有任何區域性變數表的讀寫操作,placeholder原本占用的slot還沒有別其他變數所復用,所以作為gc roots一部分的區域性變數表仍然保持著對他的關聯。
public
class localvartest
int a = 0;
system.gc();
}}
[gc (system.gc()) 68872
k->66384
k(125952
k), 0.0014311 secs]
[full gc (system.gc()) 66384
k->697
k(125952
k), 0.0051174 secs]
記憶體已釋放 4 11 區域性變數和全域性變數
在乙個函式內部定義的變數是內部變數,它只在本函式範圍內有效,也就是說只有在本函式內才能使用它們,在此函式以外是不能使用這些變數的。同樣,在復合語句中定義的變數只在本復合語句範圍內有效。這稱為 區域性變數 local variable 如 對區域性變數的一些說明 1 主函式main中定義的變數 m,n...
python 09 區域性變數和全域性變數
區域性變數是在函式內部定義的變數,只能在函式內部使用 全域性變數是在函式外部定義的變數 沒有定義在某 個函式內 所有函式內部都可以使用這個變數 提示 在其他的開發語言中,大多不推薦使用全域性變數 可變範圍太大,導致程式不好維護 區域性變數是在函式內部定義的變數,只能在函式內部使用 函式執行結束後,函...
C 041 區域性變數跟全域性變數的區別
區域性變數 概念 定義函式內部變數 定義格式 變數型別 變數名稱 作用域 從定義那一行開始到所在 塊結束 生命週期 從 執行到定義的哪一行開始,到其所在的 的結束為止 特點 相同的 塊中不可以有同名的變數 不同的 塊中可以有同名的變數,內部的變數會覆蓋外部定義的變數 全域性變數 概念 定義在函式外部...