目錄
前言
一、jdk,JRE和JVM之間的關系
二、JVM的內存劃分
前言
初步了解 jdk,JRE,JVM 之間的關系,JVM 的內存劃分。
一、jdk,JRE和JVM之間的關系
jdk 是 java 開發工具集,包含JRE;
JRE 是 java 運行時環境,包含 JVM 和 java 基礎類庫;
JVM 是 java 虛擬機;
三者關系如下圖:
二、JVM的內存劃分
JVM對所使用的內存按照功能不同,進行了劃分:
虛擬機棧:保存方法調用相關的信息,方法在執行時會創建一個棧幀,棧幀中包含局部變量表,動態鏈接,返回地址等。方法調用結束,棧幀就會被銷毀,棧幀中保存的數據也會被銷毀。
堆:JVM管理的最大的內存區域,所有使用關鍵字 new 創建的對象都在堆上保存。程序運行時,開始創建,程序退出進行銷毀。堆上的數據只要還在使用,就不會被銷毀。
方法區:存儲被虛擬機加載的類信息,常量,靜態變量,即時編譯器編譯后的代碼等數據。編譯出的字節碼就保存在這個區域。
本地方法棧:與棧的作用類似,但保存的時本地方法的局部變量。
程序計數器:保存下一條指令執行的地址。
方法區和堆是由所有線程共享的數據區,其余都屬于線程隔離的數據區。
如下圖: