IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java核心机制之JVM篇 -> 正文阅读

[Java知识库]Java核心机制之JVM篇

一、JVM虚拟机是什么?

? ? ? ? JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。

????????对于不同的平台,有不同的虚拟机。Java语言的可移植性就是基于JVM,任何平台只要装有针对于该平台的JVM,字节码文件(.class)就可以在该平台上运行。也就是“一次编译,处处运行”。

二、JDK、JRE、JVM之间的关系

? ? ? ? 1、JDK,java开发工具包,是提供给java开发人员使用的,其中包含了java相关的开发工具,如编译工具(javac.exe)、打包工具(jar.exe)等等,也包含了JRE。

? ? ? ? 2、JRE,java运行环境,包括JVM虚拟机和java程序所需的核心类库等,如果只是想运行一个开发完成的java程序,只需要安装JRE即可。

????????总体来说它们之间的关系即:JVM ? JRE ? JDK

三、JVM的运行位置

? ? ? ? ?{?用户user

? ? ? ? ? ? ? ? ? ? ? ? ?字节码文件

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?JVM

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?操作系统

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 硬件 }

????????(有时间做个图补上)

四、JVM的基本结构

? ? ? ? ? ? ? ? 方法区 Method Area? ? ? ? ? ? 虚拟机栈?Stack ? ? ? ? ? ? ? 本地方法栈?Native Method Stack

? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? 堆 Heap? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?程序计数器?Program Counter Register

??????????????(后续补图)

1、方法区:用于存储运行时常量池、已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

2、堆:在虚拟机启动时创建,用于存储对象实例,也是发生GC的主要区域。堆内的分区有,新生代、老年代、永久代(java8取消了永久代)。其中新生代包含了Eden区和Survivor区,Survivor区里面又分为From区和To区。

3、虚拟机栈:是线程私有的,它的生命周期与线程相同,随线程而生,随线程而灭。每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧,每一个方法被调用直至执行完毕的过程,就对应这一个栈帧在虚拟机栈中从入栈到出栈的过程。栈帧用于存储局部变量表、操作数栈、动态链接、方法返回值(地址)和一些附加信息。

4、本地方法栈:与虚拟机栈相似,它们之间的的区别不过是虚拟机栈为虚拟机执行java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用的Native方法服务。

5、程序计数器:用于记录当前线程所执行到的字节码的行号,也就是当前线程执行到的内存地址。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 11:46:11  更:2021-07-17 11:46:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 20:43:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码