談談對JVM虛擬機的認識

1)java程序之所以能夠跨平臺運行,正是因爲JVM虛擬機。Java程序只需要生成在JVM虛擬機上能夠運行的(目標代碼)字節碼,就可以在各種平臺上運行。
2)jre、jdk、jvm三者關係:jre就是Java運行平臺,Java程序運行就必須在jre環境下才能運行。JVM虛擬機就是jre的一部分。
JDK就是Java開發工具,所以它的運行也要依賴於jre,我們經常會看到看着JDK,響應的目錄下也會有一個jre,這是爲了保證JDK的完整性和獨立性,把JDK和JRE打包在一起了。
3)Java程序開發不考慮內存的管理,是因爲把內存的管理交給了JVM。JVM有一套完整的存儲和垃圾回收機制。說到存儲,一般在開發中認爲JVM不過有堆和棧兩部分組成,但是實際的Java 虛擬機在執行 Java 程序的過程中會把它所管理的內存劃分爲若干個不同的數據區域。每個數據區域有分爲:方法區、堆、棧(虛擬機棧和本地方法棧)、程序計數器。
我們new一個對象的時候,棧中存儲的是對象的引用、堆中存放的是具體new出來的對象實體,而對象的類型信息(比如實現的接口、父類、方法等)存儲在了方法區域。至於程序計數器是爲了方便多線程調用用的。每個單線程都有一個程序計數器,就如身份證一樣。
4)Java垃圾回收機制的話採用的是“根搜索算法”,來判斷對象是否存活,從這些節點開始向下搜索,搜索所走過的路徑稱爲引用鏈( Reference Chain),當一個對象到 GC Roots 沒有任何引用鏈相連時,則證明此對象是不可用的。然後就會被回收掉。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章