---
# System prepended metadata

title: Java 變數的部署與儲存方式

---

# Java 變數的部署與儲存方式

首先要了解在一般的記憶體中(RAM, Random-Access Memory)
有關 Global、Stack 與 Heap 儲存空間。
如下圖:


![](https://i.imgur.com/w2kpSHP.jpg)

## Global-儲存媒體：
存放著被宣告為 static 的類別成員變數。
是屬於這個(CLASS)類別的，並不會因為另外建立出一個新物件時
而配置一個新的類別成員變數供該物件存取。這裡變數一經設定
不可再改變，並不屬於物件即是全域的類別成員 。

## Stack-儲存媒體：
是**存放Java中宣告為基本資料型別(Primitive Type)的變數內容**。
或**存放物件變數的參考內容值**(object reference variable)的地方。
當新的宣告產生時，stack 將有指標直接指向該變數，所以在存取該變數資料內容時的處理速度較快。

## Heap-儲存媒體：
**存放被宣告為參考資料型別(Reference Type)的物件實體**，
但該物件的參考內容值(object reference variable)是存放在 stack 中。
一般來說，在 Heap 中儲存的資料沒有一定限制，
但盲目與不當的使用很容易造成記憶體空間與存取時間的浪費 。