任何人都可以解释一下这个例子中内存方面发生了什么(堆栈和堆)?如果我理解正确的话,java将对象存储在堆上,所以i1将在堆上......与字符串相同?但是 i2 呢,考虑到它是一个类字段声明。
public ExampleClass {
Integer i1=new Integer(1);
int i2 = 2;
String str = "abc";
}
最佳答案
所有这些都存储在堆中。
正如 SO 标签所说:
The heap is process memory set aside for dynamic allocation.
因此任何变量都将放置在堆上。
但是,任何基本类型(int
、float
等)都将存储在堆栈中**仅当它们在方法内本地分配时)。
看here了解更多信息。
关于Java(栈和堆)——在这个简单的例子中内存发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8436179/