1. java跨平臺原理
java運行圖片
1) java程序經過編譯後會生成與平臺無關的字節碼文件;
2) jvm可以解釋執行字節碼文件(JVM不是跨平臺的)
2. java開發環境
1) JDK :java Development Kit,java標準開發包,是sun公司提供的一套用於開發java應用程序的開發包,它提供了編譯 運行java程序所需的各種工具和資源,包括java編譯器,java運行環境,以及常用的java類庫
2) JRE :java運行時環境 (java Runtime Environment),是運行java程序必需的條件。
JVM和JRE的關係:
JRE包含JVM。JVM是運行java程序的核心虛擬機,而運行java程序不僅需要核心虛擬機,還需要其他類加載器,字節碼校驗器以及大量的基礎類庫。JRE除了包含JVM之外,還包含運行java程序的其他環境支持。
3. 垃圾回收機制
在java中,當沒有對象引用指向指向原先分配給某個對象的內存時,該對象內存便成爲了垃圾,JVM的一個系統級線程會自動釋放該內存。事實上,除了釋放沒用的對象外,垃圾回收也可以清除內存記錄碎片。
1) 垃圾回收的優點:垃圾回收機制能很好的提高編程效率;垃圾回收機制保護程序的完整性,垃圾回收是java安全性策略的一個重要部分。垃圾回收的缺點:影響程序性能。
2) 垃圾回收的特點:
a. 垃圾回收機制的工作目標是回收無用對象的內存空間,這些內存空間都是JVM堆內存裏的內存空間,垃圾回收只能回收內存資源,對其他物理資源,如數據庫連接,磁盤I/O等資源則無能爲力。
b. 爲了更快地讓垃圾回收機制回收那些不再使用的對象,可以將該對象的引用變量設置爲null,通過這種方式暗示垃圾回收機制可以回收該對象。
c. 垃圾回收發生的不可預知性。由於不同的JVM採用了不同的垃圾回收機制和不同的垃圾回收算法,因此它有可能是定時發生的,有可能是當CPU空閒時發生的,也有可能是等到內存消耗極限時發生,這和垃圾回收實現機制的選擇及具體的設置都有關係。
d. 垃圾回收精確性主要包括兩個方面:一是垃圾回收機制能精確地標記活着的對象;二是垃圾回收器能夠精確地定位對象之間的引用關係。
e. 現在的JVM有多種不同的垃圾回收實現,每種回收機制因其算法差異可能表現各異,有的當垃圾回收開始時就停止應用程序的運行,有的當垃圾回收運行時允許應用程序的線程運行,還有的在同一時間允許垃圾回收多線程運行。<參考自 瘋狂java講義>