JVM结构

来自随意问技术百科
跳转至: 导航搜索

运行时数据区域

  • 堆(Heap)
    • 共享内存区域,存放对象实例
    • 垃圾回收(GC)主要区域
    • 新生代(Eden、From Survivor、To Survivor)和老年代
  • 方法区(Method Area)
    • 线程共享内存区域
    • 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码
    • 永久代,非堆
    • 其中有一部分是运行时常量池,类加载后存放编译期间生产的各种字面量(string, final修饰的基本类型)和符号引用,还可以存放动态常量(运行期间产生的常量,如String.intern())
  • 虚拟机栈(VM Stack)
    • 线程私有
    • 执行java方法
  • 本地方法栈(Native Method Stack)
    • 与虚拟机栈类似
    • 线程私有
    • 执行Native方法
  • 程序计数器(Program Couter Register)
    • 线程私有
    • 当前线程所执行字节码的行号指示器

非运行时数据区

  • 直接内存
    • NIO
    • 不受Java堆大小的限制,受到本机总内存和处理器寻址空间的限制