在java中存储静态变量的位置?

这个问题在这里已经有了答案:

  • 在Java中存储静态方法和静态变量在哪里? 7个答案
  • 方法区和PermGen 4个答案

  • 在JVM内存模型中,静态变量的引用和值都存储在本身位于堆中的方法区域中。

    方法区域是在虚拟机启动时创建的。 虽然方法区域在逻辑上是堆的一部分,但是简单的实现可以选择不垃圾收集或压缩它。

    https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.4


    来自JVM文档:

    方法区域

    Java虚拟机具有在所有Java虚拟机线程中共享的方法区域。 方法区域类似于常规语言的编译代码的存储区域或类似于操作系统进程中的“文本”段。 它存储每类结构,如运行时常量池,字段和方法数据,以及方法和构造函数的代码,包括用于类和实例初始化和接口初始化的特殊方法(第2.9节)。

    方法区域是在虚拟机启动时创建的。 虽然方法区域在逻辑上是堆的一部分,但是简单的实现可以选择不垃圾收集或压缩它。 此版本的Java虚拟机规范不要求方法区域的位置或用于管理编译代码的策略。

    链接地址: http://www.djcxy.com/p/82871.html

    上一篇: Where are static variables stored in java?

    下一篇: Question about local final variable in Java