JVM体系结构中本地方法栈是如何运作的?

2026-04-27 21:361阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计524个文字,预计阅读时间需要3分钟。

JVM体系结构中本地方法栈是如何运作的?

目录+常用JVM+体系结构+本地方法栈+方法区+程序计数器+常用JVM+JVM概述+目前市面上普遍使用的JVM主要有三种+Sun公司的HotSpot——绝大多数Java开发者都在使用这款,绝对的主导力量+Oracle公司的JRockit——

目录

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

常用jvm

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

  • Sun公司的HotSpot——绝大多数java开发者都用的是这款,绝对的主力
  • Oracle公司的JRockit——这款主要用于金融和军事
  • IBM公司的J9 VM——这款是IBM硬件绑定的,用户也很少
  • 下面以HotSpot展开描述

    体系结构

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

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

    JVM体系结构中本地方法栈是如何运作的?

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

    本地方法栈

    本地方法是线程私有的

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

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

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

    方法区

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

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

    程序计数器

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

    本文共计524个文字,预计阅读时间需要3分钟。

    JVM体系结构中本地方法栈是如何运作的?

    目录+常用JVM+体系结构+本地方法栈+方法区+程序计数器+常用JVM+JVM概述+目前市面上普遍使用的JVM主要有三种+Sun公司的HotSpot——绝大多数Java开发者都在使用这款,绝对的主导力量+Oracle公司的JRockit——

    目录

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

    常用jvm

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

  • Sun公司的HotSpot——绝大多数java开发者都用的是这款,绝对的主力
  • Oracle公司的JRockit——这款主要用于金融和军事
  • IBM公司的J9 VM——这款是IBM硬件绑定的,用户也很少
  • 下面以HotSpot展开描述

    体系结构

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

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

    JVM体系结构中本地方法栈是如何运作的?

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

    本地方法栈

    本地方法是线程私有的

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

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

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

    方法区

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

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

    程序计数器

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