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