5
A
回答
4
引用類型在堆中。
任何原始類型數據和對堆上的值(方法的參數/局部變量)的引用都在堆棧上。
每個線程都有自己的堆棧。
應用程序中的所有線程共享相同的堆。
3
這真的很容易:
- 對象(即類的實例)是總是在堆上。他們不能在其他地方
- 字段是對象的一部分,所以他們也住在堆上。
- 局部變量(包括方法/構造函數)參數是總是在棧上。他們不能在其他地方。
注意局部變量只有保持引用(「指針」)或原始數值。局部變量永遠不能容納「一個對象」。
請注意,這個視圖是在JVM規範中定義的。如果需要,具體的JVM可以在非堆區域中分配對象。例如:如果它知道新創建的對象永遠不會轉義當前的調用,那麼它可以將實例化的對象放入堆棧區域。但是,這是開發人員不可見的優化。
0
0
@Joachim紹爾
如果你說的是真的,那麼爲什麼,在下面的代碼,
class Student{
int age; //instance variable
String name; //instance variable
public Student()
{
this.age = 0; //local variable and member of an object
name = "Anonymous";
}
那麼,爲什麼不是「NAME = 「無名氏」; '一個局部變量? 它是什麼類型的變量,它住在哪裏?
相關問題
- 1. JVM堆棧自檢
- 2. JVM堆棧變量
- 3. JVM堆棧訪問
- 4. OOP和堆/堆棧
- 5. 塊,堆棧和堆
- 6. JVM堆棧存儲器
- 7. JVM日誌堆棧跟蹤
- 8. 堆棧幀和堆棧指針
- 9. 任務堆棧和背堆棧在android
- 10. 內存分配,堆棧和堆棧
- 11. 希望堆棧堆棧?
- 12. 堆棧或堆
- 13. 字符堆棧,字符串堆棧,整數堆棧,整數數組堆棧等
- 14. 線程堆和堆棧
- 15. 在PHP中堆棧和堆?
- 16. 堆棧和堆查看器
- 17. 塊+ ARC,堆棧和堆
- 18. 全堆棧,堆棧交換等,什麼是堆棧?
- 19. 堆棧
- 20. 堆棧
- 21. 堆棧
- 22. 保存堆棧?
- 23. 什麼「堆棧無效,堆棧只支持堆棧1和堆棧5」是什麼意思?
- 24. 堆棧,堆棧泛化算法
- 25. 矢量,堆棧與堆棧(C++)
- 26. cin是堆棧還是堆棧?
- 27. 堆棧在java中使用堆棧
- 28. 堆棧= java.lang.StackOverflowError的:堆棧大小8MB
- 29. 堆棧溢出調用堆棧#timememoryfunctionlocation 10.0000143728
- 30. 從堆棧轉換堆棧arrayList
@Nirmal:沒什麼奇怪的。無論是C/C++運行時還是其他方式,它在所有運行時都是相同的行爲。所以,我不太明白「爲什麼」這個「爲什麼」從你身邊:) – 2010-05-13 11:18:24
「任何原始類型的數據......都在堆上」有點令人困惑。如果堆是對象的數據成員,堆就會存儲基元。 – 2010-05-13 12:30:56
是的。它的確如..但是,正如你所提到的,作爲複合材料的一部分。然而,當我們訪問數據時,它首先被複制到堆棧上。例如,對於具有定義ComplexNumber {float real,float imaginary}的對象,在doWork(ComplexNumber cn){返回cn.real * cn.real + float.imaginary * float。假想; } 首先將實數/虛數值帶入堆棧unline cn,其中僅將參考引入堆棧 – 2010-05-14 10:26:27