【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存
文章目錄
- 一、JDK 體系結構
- 二、Java 源碼運行原理
- 三、Java 虛擬機內存結構
一、JDK 體系結構
JDK 體系結構 : 下圖所有的內容都是 JDK 體系中的組成元素 ;
Java Language : 最上層是 Java 語言 ;
Tools & Tool APIs : 指令工具集 , 手動編譯 Java 源碼時會用到 , 如 java 執行字節碼程序 , javac 編譯字節碼程序 , javadoc 生成 Java 文檔 ;
JRE : 橙色部分以下的都是 JRE 運行環境 ;
Java Virtual Machine : Java 運行最重要的基礎是 Java 虛擬機 , 也就是下圖最底層的 " Java Virtual Machine " , 這是 Java 代碼一次編譯 , 到處運行的基礎 , Java 程序實際上是運行在虛擬機上的 ;
二、Java 源碼運行原理
Java 源碼運行原理 :
編寫一個 HelloWorld.java ,
public class HelloWorld{public static void main(String[] args) {System.out.println("Hello World");} }使用 Javac 命令編譯上述源碼 ,
javac HelloWorld.java得到 HelloWorld.class 字節碼文件 ,
使用 java 命令執行上述字節碼文件 , 將字節碼文件裝載到 Java 虛擬機 中 ,
java HelloWorldJava 虛擬機是使用 軟件 模擬 完整硬件系統功能 , 這是一個完全隔離環境的完整的計算機系統 ,
- 如果當前系統是 WIndows 操作系統 , Java 虛擬機會將字節碼文件轉為 Windows 機器碼 , 在 Windows 系統中運行 ;
- 如果當前系統是 Linux 操作系統 , Java 虛擬機會將字節碼文件轉為 Linux 機器碼 , 在 Linux 系統中運行 ;
在不同的操作系統中 , Java 虛擬機的底層實現是不同的 ;
三、Java 虛擬機內存結構
使用 java 命令 , 將 HelloWorld.class 字節碼裝載到 Java 虛擬機之后 ,
java HelloWorld.class先通過 " 類裝載子系統 " 加載字節碼文件 , 使用類加載器將 class 文件裝載到 Java 虛擬機 內存中 ;
Java 虛擬機內存 模型 就是 運行時數據區 , 這部分內存可劃分為以下 555 個區域 :
- 堆區 : 對象創建好之后都放在堆內存中 ;
- 方法區 ( 元空間 ) ;
- 棧 ( 線程棧 | 線程私有 ) : 存放線程運行的局部變量數據 , 是線程私有的控件
- 本地方法棧 ( 線程私有 ) : 本地方法棧 存放的是 Jni 調用中 , C/C++ 的方法棧 ;
- 程序計數器 ( 線程私有 ) ;
堆區 和 方法區 ( 元空間 ) 是所有線程 共享的區域 ;
棧 ( 線程棧 ) , 本地方法棧 , 程序計數器 是 線程私有的區域 ;
總結
以上是生活随笔為你收集整理的【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Flutter】屏幕像素适配方案 (
- 下一篇: 【Java 虚拟机原理】线程栈 | 栈帧