int x;
int y=10;
在 Java 中分配什么类型的内存?我听说Java中的所有内容都分配了动态内存。int
这对于对象来说是正确的,但是对于原始数据类型(如、float
等)是否也遵循相同的规则?
int x;
int y=10;
在 Java 中分配什么类型的内存?我听说Java中的所有内容都分配了动态内存。int
这对于对象来说是正确的,但是对于原始数据类型(如、float
等)是否也遵循相同的规则?
在一行中,它取决于声明变量的位置。
局部变量(在方法中声明的变量)存储在堆栈中,而实例和静态变量存储在堆中。*
注意: 变量的类型无关紧要。
class A{
private int a = 10; ---> Will be allocated in heap
public void method(){
int b = 4; ----> Will be allocated in stack
}
}
原始变量和函数调用存储在堆栈中。对象存储在堆中。
这是我读过的关于 Java 内存的最佳文章https://blog.codecentric.de/en/2010/01/the-java-memory-architecture-1-act/ - 你应该看看它是如何管理的。还有关于此主题的另一篇文章原始变量和参考变量的内存分配
并且,作为对您问题的回答:局部变量存储在堆栈中,而实例和静态变量存储在堆中。
堆和堆栈的主要区别在于堆栈内存用于存储局部变量和函数调用,而堆内存用于存储Java中的对象。无论在代码中何处创建对象,例如作为成员变量、局部变量或类变量,它们总是在 Java 的堆空间中创建。
阅读更多:http: //javarevisited.blogspot.com/2013/01/difference-between-stack-and-heap-java.html#ixzz2hhlHV13c
堆栈是为原语分配内存的地方,也是存储局部变量的地方;引用也在堆栈上传递。
堆是为对象分配内存的地方,这又称为堆内存。静态变量与实例变量一起存储在堆上。