生命週期
Last updated
Last updated
全域變數作用的範圍是在宣告以後,可橫跨不同Method中使用,更可因為設定可見度(public、protected)的不同,讓不同Class之間可以直接使用。
由於全域變數存活時間較長,甚至很容易引發None Thread Safe的問題,建議儘量別宣告為全域變數,讓變數存活的時間越短越好。
在Method 的區塊宣告出來的變數,皆為區域變數,區域變數作用的範圍是在宣告以後,直到區域結束時系統自動清除。
由主程式建立出來的子程式,在完成階段任務後,就會結束
在系統啟動後,會一直被不同程式使用,直到系統停止後才會消失的程式
長時間執行的程式,在使用全域變數時需要特別小心,很容易就會出現None Thread Safe 的問題,造成非預期的錯誤。
Web 系統中,以下幾種常見的技術皆屬於長時間運作:
Servlet、JSP
Filter
Listener
Connection Pool
Singleton Object
在同樣的運作邏輯,使用全域變數與區域變數來開發程式後,何種能夠提供較好的結果? 這邊提供一個簡單的範例來比較 (JVM 記憶體上限皆為64MB)
全域變數的範例在執行7000次之後就出現異常訊息: java.lang.OutOfMemoryError: GC overhead limit exceeded
區域變數的範例可以執行超過100萬次