您好,登錄后才能下訂單哦!
好程序員Java分享JVM從哪方面入手學習,無論什么級別的Java從業者,JVM都是進階時必須邁過的坎。不管是工作還是面試中,JVM都是必考題。如果不懂JVM的話,薪酬會非常吃虧。掌握了JVM機制,就等于學會了深層次解決問題的方法。對于Java開發者而言,只有熟悉底層虛擬機的運行機制,才能通過JVM日志深入到字節碼的層次去分析排查問題,發現隱性的系統缺陷,進而提升系統性能。
一些技術人員開發工具用得很熟練,觸及JVM問題時卻是模棱兩可,甚至連內存模型和內存區域,HotSpot和JVM規范,都混淆不清。工作很長時間,在生產時還在用缺省參數來直接啟動,以致系統運行時出現性能、穩定性等問題時束手無措,不知該如何追蹤排查。久而久之,這對自己的職業成長是極為不利的.
學習JVM首先需要了解Java的運行時數據區域,Java的數據區域包括程序記錄器,Java
虛擬機棧,本地方法棧,堆,方法區,運行時常量池和直接內存.在這些內存區域內,最為重要的是方法棧和堆內存。
其次需要了解到對象的構建過程,對象的內存布局,內存的布局包括三塊區域——對象頭、實例數據和對其填充。更為重要的是關于對象創建后的訪問方式,包含句柄和直接指針的方式。在這里句柄的訪問方式最為重要,句柄的最大好處是 reference 中存儲的是穩定的句柄地址,在對象移動(GC)是只改變實例數據指針地址,reference 自身不需要修改。直接指針訪問的最大好處是速度快,節省了一次指針定位的時間開銷。如果是對象頻繁 GC 那么句柄方法好,如果是對象頻繁訪問則直接指針訪問好。
最后需要了解到JVM的垃圾回收機制和內存分配機制,需要了解到引用計數法,可達性分析法,這兩種方法是配合使用的,引用計數計算對象的引用次數,而可達性分析法會分析對象的訪問情況。在垃圾回收中,需要針對每一代的算法進行了解,涉及到新生代的標記-清除算法,老年代的標記整理算法,以及分代算法。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。