程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> jvm運行時內存解析,jvm運行內存解析

jvm運行時內存解析,jvm運行內存解析

編輯:JAVA綜合教程

jvm運行時內存解析,jvm運行內存解析


一、jvm的概念

  在了解jvm的概念之前,我們先來了解java平台的邏輯結構,圖片來自《深入java虛擬機》

  

 

  從圖中我們可以看到jdk包含了jre,java語言和java開發工具和Api,jre包含了java運行的基礎類庫和java虛擬機,java虛擬機支撐著java程序的運行。

  jvm(java virtual machine)翻譯為java虛擬機,從字面上來理解,jvm就是一個虛擬的機器,其實類似於一個操作系統,通過軟件去虛擬出一個虛擬機,幫助我們管理計算機的內存和調用計算機的硬件等等。而jvm就是java程序運行時的虛擬機,在java程序運行時,jvm將java字節碼文件轉換成當前物理機認識的機器語言並且管理程序運行時候的內存,執行當前程序的代碼,調用相關的硬件,從而得到程序運行的結果。

二、java程序的工作原理。

  java程序源文件(.java)由java編譯工具編譯成.class文件,jvm中的類加載器讀取.class中的字節碼內容,並執行其中的字節碼指令,在此期間,jvm還兼顧著管理java程序的運行內存,通過操作系統來調用相關硬件。

  

三、jvm運行時內存分布

  jvm的運行過程中將java程序運行時數據區分為以下幾個部分:

   

  

  (1)程序計數器:存儲虛擬機字節碼執行的地址
  (2)java虛擬機棧:java方法運行時的局部變量表,操作數棧,方法出口等
  (3)本地方法棧:類似於java虛擬機棧,運行Native本地方法時存儲局部變量表,操作數棧,方法出口等
  (4)方法區:存放程序的常量,靜態變量,類加載後的信息,即時編譯器編譯後的代碼。
  (5)java堆:是虛擬機中最大的一塊內存,用於存放對象實例
  (6)運行時常量池:方法區的一部分,存放程序運行時的常量和符號引用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved