1. 程式人生 > >JDK、JRE和JVM 是何物?JVM深度理解

JDK、JRE和JVM 是何物?JVM深度理解

1、基本概念

JDK(Java Development Kit) 是 Java 語言的軟體開發工具包(SDK)。

在JDK的安裝目錄下有一個jre目錄,裡面有兩個資料夾bin和lib,在這裡可以認為bin裡的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib合起來就稱為jre。

JRE(Java Runtime Environment,Java執行環境),包含JVM標準實現及Java核心類庫。

JVM是(Java Virtual Machine)(Java虛擬機器)的縮寫,JVM是一種用於計算裝置的規範,它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。 在這裡插入圖片描述

2、JVM構造詳解 JVM 虛擬機器執行在作業系統上,它與硬體沒有直接的互動 在這裡插入圖片描述

3、JVM 記憶體模型 在這裡插入圖片描述

1 Class Loader類載入器 2 Execution Engine執行引擎負責解釋命令,提交作業系統執行。 3 Native Interface 本地介面 4 Runtime data area 執行資料區

4、執行資料區 具體模組功能

棧管執行堆管儲存

棧(stack)也叫棧記憶體,主管Java程式的執行,是線上程建立時建立,它的生命期是跟隨執行緒的生命期,執行緒結束棧記憶體也就釋放,對於棧來說不存在垃圾回收問題,只要執行緒一結束該棧就Over,生命週期和執行緒一致,是執行緒私有的.

Method Area 方法區 。方法區是被所有執行緒共享,所有欄位和方法位元組碼,以及一些特殊方法如建構函式,介面程式碼也在此定義。簡單說,所有定義的方法的資訊都儲存在該區域,此區屬於共享區間。 它用於儲存已被虛擬機器載入的類資訊、常量、靜態變數、即時編譯器編譯後的程式碼等資料。

例項變數存在於堆中。

本地方法棧(Native Method Stacks)與虛擬機器棧所發揮的作用是非常相似的,其 區別不過是虛擬機器棧為虛擬機器執行Java 方法(也就是位元組碼)服務,而本地方法棧則是為虛擬機器使用到的Native 方法服務。