JVM体系结构及本地方法栈&方法区

目录

  • 常用jvm
  • 体系结构
  • 本地方法栈
  • 方法区
  • 程序计数器

常用jvm

目前市面上普遍使用的JVM大致有三种

  1. Sun公司的HotSpot——绝大多数java开发者都用的是这款,绝对的主力
  2. Oracle公司的JRockit——这款主要用于金融和军事
  3. IBM公司的J9 VM——这款是IBM硬件绑定的,用户也很少

下面以HotSpot展开描述

体系结构

Java文件最终在JVM中执行,JVM运行在操作系统之上,它与硬件并没有直接的交互

(灰色区域为线程私有,不存在垃圾回收;深色区域为共享区域,存在垃圾回收)

JVM体系结构及本地方法栈&方法区_第1张图片

JVM体系结构及本地方法栈&方法区_第2张图片

堆&栈&方法区----戳我

本地方法栈

本地方法是线程私有的

本地方法(native method):凡是带了native关键字的,说明java的作用范围达不到,会通过native调用操作系统C语言的库

本地方法区:里面运行带native关键字的本地方法,并由执行引擎(Excutrion Engine)执行。执行引擎最终会调用本地方法库(Native Libraies)执行

目前很少用JNI进行通信,更多的使用Socket、WebService等等

方法区

方法区是线程共享的运行时内存区域,它存储了每一个类的结构信息。运行时常量池、字段、方法数据、构造函数和普通方法的字节码内容都存在于方法区中。

实例变量存在堆内存中,和方法区无关

程序计数器

每个线程都有一个程序计数器,是线程私有的,就是一个指针指向方法区中的方法字节码(用来存储指向类似于一条指令的地址,也即将要执行的指令代码),用于执行引擎读取下一条指令。它是一块非常狭小的空间。

你可能感兴趣的:(⭐【JVM】,jvm体系结构,本地方法栈,方法区,程序计数器)