JVM(Java Virtual Machine):Java虛擬機,Java程序需要運行在虛擬機上,不同的平臺有自己的虛擬機,因此Java語言可以實現跨平臺。
JRE(Java Runtime Environment):Java虛擬機和Java程序所需要的核心類庫等。核心類庫主要是java.lang包;包含了運行Java程序必不可少的系統類。
JDK(Java Development Kit):提供給Java開發人員使用的,其中包含了Java的開發工具,也包括了JRE。
jvm、jre、jdk關係圖:
JVM運行時數據區:
- 程序計數器:指向當前線程正在執行的字節碼指令的地址,行號。
- 虛擬機棧:存儲當前線程運行方法所需要的數據指令、返回地址。
- 本地方法棧:存儲本地方法。
- 方法區:類信息、常量、靜態變量、JIT。
- Heap:內存。
程序計數器、虛擬機棧、本地方法棧在每個線程裏面都是獨享的。不會發生線程安全問題。