本文目錄一覽:
深入理解 Java 之 GC 到底如何工作
Garbage Collection簡稱為GC,是垃圾回收的意思、內存處理器是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰。Java語言提供的GC功能可以自動的檢測對象是否超過作用域,從而達到自動回收內存的目的,java語言沒有提供釋放已分配內存的顯示操作方法,資源回收工作全部交由GC來完成,程序員不能精確的控制垃圾回收的時機。
GC在實現垃圾回收時的基本原理:
Java的內存管理實際就是對象的管理,其中包括對像的分配和釋放。對於程序員來說,分配對象使用new關鍵字,釋放對象時只是將對象賦值為null,讓程序員不能夠再訪問到這個對象,該對象被稱為「不可達」。GC將負責回收所有「不可達」對象的內存空間。
對於GC來說,當程序員創建對象時,GC就開始監控這個對象地址、大小以及使用情況。通常GC採用有向圖的方式記錄並管理堆中的所有對象,通過這種方式確定哪些對象是「可達」的,哪些對象是「不可達」的。當GC確定一些對象為「不可達時」GC就有責任回收這些內存空間,但為了GC能夠在不同的平台上實現,java規範對GC的很多行為都沒有進行嚴格的規定。例如對於採用什麼類型的回收演算法、什麼時候進行回收等重要問題都沒有明確的規定,因此不同的JVM實現著不同的的實現演算法,這也給JAVA程序員的開發帶來了很多不確定性。
深入理解java虛擬機第二版和第三版的區別?
區別:
第三版是一款針對java學習打造的圖書,它從Java程序員的角度出發,系統地將Java程序運行過程中涉及的各種知識整合到了一起,而第二版不僅技術更新、內容更豐富,而且實戰性更強。
【第二版】
《深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)》共分為五大部分,圍繞內存管理、執行子系統、程序編譯與優化、高效並發等核心主題對JVM進行了全面而深入的分析,深刻揭示了JVM的工作原理。
第一部分從宏觀的角度介紹了整個Java技術體系、Java和JVM的發展歷程、模塊化,以及JDK的編譯,這對理解書中後面內容有重要幫助。
第二部分講解了JVM的自動內存管理,包括虛擬機內存區域的劃分原理以及各種內存溢出異常產生的原因;常見的垃圾收集演算法以及垃圾收集器的特點和工作原理;常見虛擬機監控與故障處理工具的原理和使用方法。
第三部分分析了虛擬機的執行子系統,包括類文件結構、虛擬機類載入機制、虛擬機位元組碼執行引擎。
第四部分講解了程序的編譯與代碼的優化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;講解了虛擬機的熱點探測方法、HotSpot的即時編譯器、編譯觸發條件,以及如何從虛擬機外部觀察和分析JIT編譯的數據和結果;
第五部分探討了Java實現高效並發的原理,包括JVM內存模型的結構和操作;原子性、可見性和有序性在Java內存模型中的體現;先行發生原則的規則和使用;線程在Java語言中的實現原理;虛擬機實現高效並發所做的一系列鎖優化措施。
【第三版】
深入理解java虛擬機第三版pdf是一款針對java學習打造的圖書,它從Java程序員的角度出發,系統地將Java程序運行過程中涉及的各種知識整合到了一起,並配以日常工作中可能會碰到的疑難案例,引領讀者輕鬆踏上探索Java虛擬機的旅途。
深入java虛擬機,絕版和深入理解Java虛擬機:JVM高級特性與最佳實踐。
市面上關於jvm的書少之又少,要不是周志明出的這本深入理解java虛擬機,那麼中文jvm的書籍可以說是有10年的空隙了,上一版還是02年的《java虛擬機規範》了。\x0d\x0a從時效上來說,《深入java虛擬機》出自2000年,技術上已然是滯後很多了。\x0d\x0a所以這兩者比較,絕對推薦後者。\x0d\x0a\x0d\x0a另外單《深入理解java虛擬機》一書來評價,絕對算是一本好書了,掌握此書內容後,基本可以解決java程序員日常遇到的虛擬機先關問題(OOM,調優,GC等),以及應付各種關於該條目的面試筆試問題。\x0d\x0a其中,java內存管理,類載入機制,垃圾回收建議重點閱讀\x0d\x0a\x0d\x0a國外的了解不多,但是就目前來看,建議樓主先吃透周志明老師的這本。有基礎還想深入的話,java虛擬機規範這種官方標準文檔放著呢。
原創文章,作者:LQDF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146414.html