JVM
Java Virtual Machine,Java虛擬機。是java編譯後的.class
文件(字節碼文件)與硬件系統之間的接口,也就是說用來運行.class
文件。JVM實現了Java最重要的特性:平臺無關性。
編譯後的 Java 程序指令並不直接在硬件系統的 CPU 上執行,而是由 JVM 執行,JVM屏蔽了與具體平臺相關的信息。JVM對字節碼文件進行解釋執行,把字節碼翻譯成相關平臺上的機器指令。
javac
是收錄於 JDK 中的 Java 語言編譯器。我們使用javac
命令編譯Java源文件,得到.class
文件。然後使用java
命令執行.class
文件(也就是使用JVM運行.class
文件)。使用jar
命令可對字節碼文件以及配置文件進行打包(可對一個由多個字節碼文件和配置文件等資源文件構成的項目進行打包)。
JVM的內存可分爲:線程棧、堆、靜態方法區,native方法使用的是直接內存,不包含在JVM中。Java NDK可以調用C/C++。
下面要講的GC(garbage collection)就是針對堆
進行內存回收。
GC的內存模型