java - JVM 是否将内存分配给值为 null 的本地引用变量

标签 java memory-management

我对java中的内存管理感到困惑。到处都写着局部变量在堆栈中被赋予内存。如果该局部变量是对象类型,那么它会在堆中获得内存。我想知道JVM在哪里为值为null的本地对象引用变量分配内存。

public void show(){
Animal animal = null;
}

JVM 在哪里为动物对象分配内存。它在堆栈中吗?或者它不提供任何内存,因为它被标记为空。我确信它没有在堆中分配内存。

谁能解答我的疑惑。

最佳答案

我认为引用动物将存储在堆栈本身中,直到方法完成执行,但对象的状态将存储在堆中。

因此,在上面的情况下,指向 null 的对象将在堆栈​​本身中分配 null,否则,如果您初始化该对象,则它将在堆中拥有该对象的地址。

关于java - JVM 是否将内存分配给值为 null 的本地引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47786611/

相关文章:

java - 无法获取 ListAdapter 类中的类上下文

ios - 如何在 swift 中避免循环 segues

c - 调用malloc()和free()时寄存器/缓存和主存之间是否有数据传输

java - 更改maven eclipse项目中的java SDK版本

java - 其中哪些是我的 JDK 路径,哪些是 JAVA_HOME?

c++ - 为什么 mstats 和 malloc_zone_statistics 不显示释放后恢复的内存?

ios - iOS 中的 CGContextRef 内存泄漏

c++ - std::unique_ptr 是为数组分配内存的错误工具吗?

java - 使用独特的 ImageIcons 动态初始化 JButton

java - Spring Boot 应用程序安全