java jvm是什么,讓我們一起了解一下?
jvm是java上的一個虛構出來的計算機,是一個位于Java與操作系統(tǒng)之間的中間態(tài)。有自己完善的硬件結構,如處理器、堆棧、寄存器等,還具有相應的指令系統(tǒng)。
JVM的作用是什么?
Java程序的跨平臺特性主要就是因為JVM實現(xiàn)的。在編譯java程序時會將寫好的源程序通過編譯器編譯生成.class文件(又稱為字節(jié)碼文件),之后就是通過JVM內(nèi)部的解釋器將字節(jié)碼文件解釋成為具體平臺上的機器指令執(zhí)行,所以就可以實現(xiàn)java程序的跨平臺特性。
JVM內(nèi)部體系結構大致分為三部分:類裝載器(ClassLoader)子系統(tǒng),運行時數(shù)據(jù)區(qū)和執(zhí)行引擎。
那java程序運行與JVM的關系是怎樣的?
1、java源文件編譯生成.class文件(字節(jié)碼)
2、字節(jié)碼由JVM解釋運行。
因為java程序既要編譯同時也要經(jīng)過JVM的解釋運行,所以java被稱為半解釋語言。
jvm在java應用中的具體案例分析如下:
public?class?TestClassLoader?{ ????public?static?void?main(String[]?args)?{ ????????Person?person_01?=?new?Person(); ????????Person?person_02?=?new?Person(); ????????Person?person_03?=?new?Person(); ????????//發(fā)現(xiàn)person_01,person_02,person_03的hashCode一致,代表這三個實例化對象隸屬于一個Class,即Person ????????System.out.println(person_01.hashCode()); ????????System.out.println(person_02.hashCode()); ????????System.out.println(person_03.hashCode()); ????????//Person實例化對象person_01通過getClass()方法得到Class對象Person ????????Class?Person?=?person_01.getClass(); ????????//Person通過getClassLoader()方法得到系統(tǒng)類加載器 ????????ClassLoader?myClassLoader?=?Person.getClassLoader(); ????????System.out.println(myClassLoader.hashCode()); ????????//加載器對象myClassLoader通過getParent()方法得到拓展類加載器 ????????ClassLoader?myParentClassLoader?=?myClassLoader.getParent(); ????????System.out.println(myParentClassLoader.hashCode()); ????????//加載器對象myGPClassLoader通過getParent()方法得到引導類加載器 ????????ClassLoader?myGPClassLoader?=?myParentClassLoader.getParent(); ????????System.out.println(myGPClassLoader.hashCode());?//發(fā)現(xiàn)報錯,無法通過方法獲取引導類加載器 ????} } class?Person{}
以上就是小編今天的分享了,希望可以幫助到大家。