java jvm

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java jvm是什麼,讓我們一起了解一下?

jvm是java上的一個虛構出來的計算機,是一個位於Java與操作系統之間的中間態。有自己完善的硬件結構,如處理器、堆疊、寄存器等,還具有相應的指令系統。

JVM的作用是什麼?

Java程序的跨平台特性主要就是因為JVM實現的。在編譯java程序時會將寫好的源程序通過編譯器編譯生成.class文件(又稱為字節碼文件),之後就是通過JVM內部的解釋器將字節碼文件解釋成為具體平台上的機器指令執行,所以就可以實現java程序的跨平台特性。

JVM內部體系結構大致分為三部分:類裝載器(ClassLoader)子系統,運行時數據區和執行引擎。

java jvm

那java程序運行與JVM的關係是怎樣的?

1、java源文件編譯生成.class文件(字節碼)

2、字節碼由JVM解釋運行。

因為java程序既要編譯同時也要經過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();        //發現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()方法得到系統類加載器        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()); //發現報錯,無法通過方法獲取引導類加載器    }}class Person{}