gpt4 book ai didi

java - 静态类变量存储在内存中的什么位置?

转载 作者:IT王子 更新时间:2023-10-28 23:32:44 27 4
gpt4 key购买 nike

这是 How are static arrays stored in Java memory? 的后续问题.

所以 C/C++ 中的全局变量存储在内存的静态数据段中。但是 Java/C++ 中的静态类变量呢?

它不能是静态数据段,因为您不知道在整个程序期间将引用什么/多少类(因为反射)。这绝对不是堆栈,因为这没有任何意义。将它存储在堆上也有点不确定。

最佳答案

在 Java 中,在低级别,类静态变量确实与所有其他类元数据一起存储在堆中。对于 Java,它们看起来像全局变量,但对于 JVM 的低级堆管理例程,它们是动态数据(尽管为了提高 GC 效率,它们可能会被稍微特殊处理,因为它们可能生命周期很长)。毕竟,可以通过取消引用类加载器来卸载类。

至于是否和C的malloc()一样,不太可能。大多数 JVM 在低级别控制它们的堆。他们从操作系统中获取一大块内存并自行分配。因此,大多数 Java 数据(包括静态数据)并不存储在 malloc 堆中,而是存储在由 JVM 管理的单独堆中。

关于java - 静态类变量存储在内存中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6655338/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com