JDK1 8 區域性變數表

2021-08-26 23:58:16 字數 1152 閱讀 6063

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 區域性變數跟全域性變數的區別

區域性變數 概念 定義函式內部變數 定義格式 變數型別 變數名稱 作用域 從定義那一行開始到所在 塊結束 生命週期 從 執行到定義的哪一行開始,到其所在的 的結束為止 特點 相同的 塊中不可以有同名的變數 不同的 塊中可以有同名的變數,內部的變數會覆蓋外部定義的變數 全域性變數 概念 定義在函式外部...