在Java中,全局變量(也稱為靜態變量)是在類加載時分配內存的。它們在整個應用程序的生命周期內存在,直到應用程序關閉。全局變量存儲在方法區(Method Area)中,這是一個特殊的內存區域,用于存儲已加載的類信息、常量、靜態變量以及即時編譯器編譯后的代碼等數據。
全局變量的內存分配情況如下:
在類加載時,JVM會為其分配內存空間。這個內存空間的大小取決于變量的數據類型和數量。例如,一個整數類型的靜態變量占用4字節(32位JVM)或8字節(64位JVM)的內存空間。
全局變量在方法區中只有一個副本,所有該類的實例共享這個變量。因此,全局變量的內存占用不會隨著實例數量的增加而增加。
當應用程序關閉時,JVM會釋放方法區中的內存,包括全局變量所占用的內存。
需要注意的是,雖然全局變量在內存中只有一個副本,但它們仍然可能與其他類實例共享數據。因此,在編寫代碼時,需要確保對全局變量的訪問是線程安全的,以避免數據不一致的問題。