JVM虛擬機(一):java虛擬機的基本結構

1: 類加載子系統(負責從文件系統或者網絡中加載class信息,加載的類信息存放於一塊成爲方法區的內存空間。除了類信息外,方法區中可能還存放運行時常量池信息,包括字符串字面量和數字常量(這部分常量信息是class文件常量池部分的內存映射))html

2:java棧(java方法的調用,保存着局部變量,方法參數,同時和java方法的調用、返回密切相關)java

3:方法區(全部線程共享的內存區域,保存系統的類信息,好比類的字段、方法、常量池等)c++

4:java堆(在虛擬機啓動的時候創建,它是java程序最主要的內存工做區域。幾乎全部的java對象實例都存放於java堆中。堆空間是全部線程共享的,這是一塊與java應用密切相關的內存區域)網絡

5:直接內存(java的nio庫容許java程序使用直接內存,參閱:NIO之直接緩衝區與非直接緩衝區。直接內存是在java堆外的、直接向系統申請的內存區間。一般,訪問直接內存的速度會優於java堆。所以,出於對性能的考慮,讀寫頻繁的場合可能會考慮使用直接內存,因爲直接內存在java堆外,所以直接內存的大小不會直接受限於xmx指定的最大堆大小,可是系統內存是有限的,java堆和直接內存的總和依然受限於操做系統能給出的最大內存)jvm

6:本地方法棧(本地方法的調用,這是java虛擬機的重要擴展,java虛擬機容許java直接調用本地方法(這個方法一般使用c編寫))post

7:垃圾回收系統 (對方法區、java堆和直接內存進行回收。其中java堆是垃圾回收的重點。和c/c++ 不一樣,java中全部的對象空間釋放是隱式的,也就是說對象的釋放,開發人員不須要人爲干預,對於再也不使用的對象,垃圾回收系統會在後臺自動查找、標識並釋放垃圾對象,完成對java堆,方法區和直接內存中的全自動化管理)性能

8:pc寄存器(每一個線程的私有空間,jvm會爲每一個java線程建立pc寄存器)url

9:執行引擎(負責執行虛擬機的字節碼)

操作系統

相關文章
相關標籤/搜索