java虛擬機可能是下面三個中的一個
1:抽象規范
2:一個具體實現
3:一個虛擬機實例
java虛擬機的生命周期
java虛擬機的天職就是:運行一個java程序.當一個java程序運行開始運行時,一個虛擬機實例就產生了.當一個計算機上同時運行三個java程序.則將產生三個java虛擬機實例.每個程序運行在自己的虛擬機里面,不會干擾.當程序運行完畢時,虛擬機將自動退出.
java虛擬機里面有兩種線程,守護線程和非守護線程.守護線程是說java虛擬機自己的線程,如垃圾收集線程.而非守護線程則是java中運行的程序線程.當非守護線程都運行完了.java虛擬機將退出.
一個java虛擬機主要包括了:類轉載子系統,運行時數據區,執行引擎,內存區等等.
運行時數據區------主要是:1 堆 2? 方法區 3 java棧
堆和方法區對虛擬機實例中所有的對象都是共享的.而java棧區,是對每個線程都是獨立的. 當一個class被載入到 classloader中時,會解析它的類型信息.把這些類型信息放到方法區,而把程序中運行的對象,放到堆區.當一個新線程被創建,就分配一個新的java棧.java棧中保存的,是方法中的一些變量,狀態.java棧是由很多的java棧幀組成的.一個棧幀包含了一個方法運行的狀態.當一個方法被執行的時候,就壓入一個新的java棧幀到java棧中,方法返回的時候,就把棧幀彈出來,拋棄掉.
方法區
在java虛擬機中,被裝載的類的類型信息和類的靜態變量被存儲在方法區這樣的內存里面.java程序運行時,會查找這些個信息.方法區的大小,是動態的.也可以不是連續的.可自由在堆中分配.也可以由用戶或者程序員指定.方法區可被垃圾收集.
方法區可以保存以下信息
這個類型的全限定名
直接超類的全限定名
是類類型還是接口
類型的訪問修飾符
任何直接超類接口的全限定名的有序列表.
該類型的常量池
字段信息 類中聲明的每個字段及其順序 如字段名,類型.修飾符號.
方法信息:如方法名,返回類型.參數表列.修飾符號.字節碼.操作數棧和棧幀中局部變量區大小等等
類靜態變量
一個到類classloader的引用
一個到class類的引用
堆
用來存儲運行時的對象實例
java棧
每啟動一個新的線程.就會分配到一個java棧.java棧以幀為單位保存線程的運行狀態.它有兩種操作.入棧,出棧.
當一個方法被調用時,入棧,當一個方法返回時,出棧,或者當方法出現異常.也出棧.
棧幀
組成部分 局部變量區,操作數棧,幀數據區.
posted on 2006-04-05 18:25
dodoma 閱讀(376)
評論(1) 編輯 收藏 所屬分類:
java基礎