侧边栏壁纸
博主头像
liuxy博主等级

细水长流,吃穿不愁

  • 累计撰写 39 篇文章
  • 累计创建 30 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

【JVM专题】JVM的主要组成部分及作用

liuxy
2023-02-22 / 0 评论 / 0 点赞 / 207 阅读 / 532 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-02-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

JVM包含两个子系统和两个组件:

6EB6F3F3-F91B-46E4-A260-1DC051203546

两个子系统:

Class Loader(类装载)
Execution Engine(执行引擎)

两个组件:

Runtime Data Areas(运行时数据区)
Native Interface(本地接口)

  • Class Loader(类装载):根据给定的全限定类名(如:Java.Lang.Object)来装载class文件到Runtime Data Areas(运行时数据区)中的method area。
  • Execution Engine(执行引擎):执行classes中的指令。
  • Native Interface(本地接口):与native libraries交互,是其它编程语言交互的接口。
  • Runtime Data Areas(运行时数据区):是JVM的内存。

作用:

首先通过编译器把java代码转换成字节码文件,类加载器(ClassLoader)再把字节码加载到内存中,将其放在运行时数据区(Runtime Data Areas)的方法区内,而字节码文件只是JVM的一套指令集规范,并不能直接交给底层操作系统区执行,因此,需要特定的命令解析器执行引擎(Execution Engine),讲字节码翻译成底层系统指令,再交由CPU区执行,而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能。

Java程序运行机制步骤:

  1. 利用IDE集成开发工具编写Java源代码(.java文件)
  2. 利用编译器(javac命令)将源代码编译成字节码文件(.class)
  3. 利用解析器(java命令)运行字节码文件

注:从上图可以看出,jvav文件通过编译器生成.class文件,接下来类加载又将.class文件加载到JVM中。

类的加载指的是将类的.class文件中的二进制数据读取到内存中,将其放在运行时数据区的方法区内,然后堆区创建一个java.lang.Class对象,用来封装类在方法区的数据结构。

0
广告 广告

评论区