int x;
int y=10;
在Java中分配了哪种类型的内存?我听说Java中的所有内容都分配了动态内存。对于对象来说也是如此,但原始数据类型也遵循相同的规则(如int
,float
等)?
答案 0 :(得分:6)
在一行中,它取决于声明变量的位置。
局部变量(在方法中声明的变量)存储在堆栈中,而实例和静态变量存储在堆。* < / p>
注意:强> 变量的类型无关紧要。
class A{
private int a = 10; ---> Will be allocated in heap
public void method(){
int b = 4; ----> Will be allocated in stack
}
}
答案 1 :(得分:3)
原始变量和函数调用存储在堆栈中。 对象存储在堆中。
答案 2 :(得分:1)
答案 3 :(得分:0)
堆和堆栈之间的主要区别在于堆栈内存用于存储局部变量和函数调用,而堆内存用于在Java中存储对象。无论如何,在代码中创建对象,例如作为成员变量,局部变量或类变量,它们总是在Java中的堆空间内创建。
了解详情:http://javarevisited.blogspot.com/2013/01/difference-between-stack-and-heap-java.html#ixzz2hhlHV13c
答案 4 :(得分:0)
堆栈是将内存分配给基元的位置,以及存储局部变量的位置。引用也在堆栈中传递。
堆是为对象分配内存的地方,而对象又被称为堆内存。静态变量与实例变量一起存储在堆上。
答案 5 :(得分:0)
这是我读过的关于java内存https://blog.codecentric.de/en/2010/01/the-java-memory-architecture-1-act/的最好的文章 - 你应该看看它是如何管理的。此外,还有另一篇关于此主题的帖子Memory allocation for primitive and reference variables
并且,作为您的问题的答案:局部变量存储在堆栈中,而实例和静态变量存储在堆上。