深入java虛擬機
- 作者:新網
- 來源:新網
- 瀏覽:100
- 2018-05-07 11:23:45
java虛擬機實例的生命周期:java虛擬機的職責是負責運行一個java程序。當啟動一個java虛擬機時,一個虛擬機實例便誕生了。當該程序關閉退出時,這個虛擬機實例也隨之退出。
java虛擬機實例的生命周期:java虛擬機的職責是負責運行一個java程序。當啟動一個java虛擬機時,一個虛擬機實例便誕生了。當該程序關閉退出時,這個虛擬機實例也隨之退出。

<
div> 如果一臺
主機上同時運行3個java程序,就會產生3個java虛擬機實例。
java虛擬機通過調用某個初始類的main方法來運行一個java程序。
Java代碼
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
java虛擬機規范中,一個虛擬機的行為是分別按照子系統,內存區,數據類型以及指令這幾部份組成的。
當java虛擬機運行一個程序時,它需要內存來存儲許多東西,例如,字節碼,從已裝載的class文件中得到的其他信息,程序創建的對象,傳遞給方法的參數,返回值,局部變量,以及運行的中間結果。i每個java虛擬機都有一個方法區和一個堆,它們是由所有線程共享的。
當每個新線程被創建時,它都會得到自己的pc寄存器以及一個java棧。如果線程正在執行的是一個java方法,那么寄存器大的值總是指向下下一條將被執行的指令,而它的java棧總是存儲該線程中的java方法調用的狀態--包括它的局部變量,被調用時傳遞過來的參數,它的返回值,以及運算的中間結果。
java棧是由許多棧幀組成,一個棧幀包括一個java調用的狀態。當線程調用一個java方法時,虛擬機壓入一個新的棧幀到該線程的java棧中;當該方法返回時,這個棧幀被從java棧中彈出并拋棄。
java虛擬機沒有寄存器,其指令使用java棧來存儲中間數據。這樣設計是為了使得java虛擬機的指令集盡量緊湊。
數據類型
java虛擬機的數據類型包括
基本類型:數值類型,boolean,returnAddress
引用類型:類類型,接口類型,數組類型
java虛擬機為每個載入的類型存儲以下信息,
該類型的基本信息、該類型的常量池、字段類型、方法信息。 除了常量之外的所有類(靜態)變量, 一個到類cla
ssloader的引用,一個到class類的引用。
以上就是小編今天介紹的全部內容。