int x;
int y=10;
Java中分配了什麼類型的內存?我聽說Java中的所有內容都被分配了動態內存。這對於對象來說是正確的,但對基本數據類型也遵循相同的規則(如int
,float
等)?Java中的靜態和動態存儲器
int x;
int y=10;
Java中分配了什麼類型的內存?我聽說Java中的所有內容都被分配了動態內存。這對於對象來說是正確的,但對基本數據類型也遵循相同的規則(如int
,float
等)?Java中的靜態和動態存儲器
在一行中,它取決於聲明變量的位置。
局部變量(在方法聲明的變量)存儲在棧上,而實例和靜態變量存儲在堆 *
注: 類型的變量不物。
class A{
private int a = 10; ---> Will be allocated in heap
public void method(){
int b = 4; ----> Will be allocated in stack
}
}
堆和堆棧之間的主要區別在於堆棧內存用於存儲局部變量和函數調用,而堆內存用於存儲Java中的對象。無論如何,在代碼中創建對象的位置例如作爲成員變量,局部變量或類變量,它們始終在Java中的堆空間內創建。
瞭解更多:http://javarevisited.blogspot.com/2013/01/difference-between-stack-and-heap-java.html#ixzz2hhlHV13c
棧就是內存分配給原語和局部變量的存儲;在棧上也傳遞引用。
堆是內存分配給對象的地方,而內存又被稱爲堆內存。靜態變量與實例變量一起存儲在堆中。
這是我讀過關於java內存的最好的文章https://blog.codecentric.de/en/2010/01/the-java-memory-architecture-1-act/ - 你應該看看它是如何管理的。還有關於這個問題的另一篇文章Memory allocation for primitive and reference variables
而且,作爲對您的問題的回答:局部變量存儲在堆棧中,而實例和靜態變量存儲在堆中。
我更習慣於對「棧」和「堆」 –
術語一旦你得到你的答案尋找,你必須選擇你認爲最好的答案。 –