好程式設計師Java分享JVM從哪方面入手學習
好程式設計師Java分享 JVM從哪方面入手 學習, 無論什麼級別的Java從業者,JVM都是進階時必須邁過的坎。不管是工作還是面試中,JVM都是必考題。如果不懂JVM的話,薪酬會非常吃虧。掌握了JVM機制,就等於學會了深層次解決問題的方法。對於Java開發者而言,只有熟悉底層虛擬機器的執行機制,才能透過JVM日誌深入到位元組碼的層次去分析排查問題,發現隱性的系統缺陷,進而提升系統效能。
一些技術人員開發工具用得很熟練,觸及JVM問題時卻是模稜兩可,甚至連記憶體模型和記憶體區域,HotSpot和JVM規範,都混淆不清。工作很長時間,在生產時還在用預設引數來直接啟動,以致系統執行時出現效能、穩定性等問題時束手無措,不知該如何追蹤排查。久而久之,這對自己的職業成長是極為不利的.
學習JVM首先需要了解Java的執行時資料區域,Java的資料區域包括程式記錄器,Java
虛擬機器棧,本地方法棧,堆,方法區,執行時常量池和直接記憶體.在這些記憶體區域內,最為重要的是方法棧和堆記憶體。
其次需要了解到物件的構建過程,物件的記憶體佈局,記憶體的佈局包括三塊區域——物件頭、例項資料和對其填充。更為重要的是關於物件建立後的訪問方式,包含控制程式碼和直接指標的方式。在這裡控制程式碼的訪問方式最為重要,控制程式碼的最大好處是 reference 中儲存的是穩定的控制程式碼地址,在物件移動(GC)是隻改變例項資料指標地址,reference 自身不需要修改。直接指標訪問的最大好處是速度快,節省了一次指標定位的時間開銷。如果是物件頻繁 GC 那麼控制程式碼方法好,如果是物件頻繁訪問則直接指標訪問好。
最後需要了解到JVM的垃圾回收機制和記憶體分配機制,需要了解到引用計數法,可達性分析法,這兩種方法是配合使用的,引用計數計算物件的引用次數,而可達性分析法會分析物件的訪問情況。在垃圾回收中,需要針對每一代的演算法進行了解,涉及到新生代的標記-清除演算法,老年代的標記整理演算法,以及分代演算法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2657660/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java學習路線分享JVM相關概念程式設計師JavaJVM
- 好程式設計師Java學習路線分享JVM類載入機制程式設計師JavaJVM
- 好程式設計師Java學習路線分享SpringCloud程式設計師JavaSpringGCCloud
- 好程式設計師分享Java學習經驗五彈程式設計師Java
- 好程式設計師Java分享JVM類載入機制程式設計師JavaJVM
- 好程式設計師Java教程分享如何系統的學習Java程式設計師Java
- 好程式設計師Java學習路線分享mybatis對映程式設計師JavaMyBatis
- 好程式設計師Java學習資源分享RabbitMQ介紹程式設計師JavaMQ
- 好程式設計師Java學習路線分享Java框架怎麼搭建程式設計師Java框架
- 好程式設計師Java學習路線分享Java-String常用方法程式設計師Java
- 好程式設計師Java培訓分享學習Java需要哪些基礎程式設計師Java
- 好程式設計師Java學習路線分享原生Ajax的使用程式設計師Java
- 好程式設計師Java學習路線分享finalize()方法詳解程式設計師Java
- 好程式設計師Java學習路線分享MyBatis之Spring整合程式設計師JavaMyBatisSpring
- 好程式設計師Java學習路線分享Redis快速入門程式設計師JavaRedis
- 好程式設計師Java學習路線分享MyBatis之基本使用程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享maven是什麼程式設計師JavaMaven
- 好程式設計師Java學習路線分享SpringMVC之MVC概述程式設計師JavaSpringMVC
- 好程式設計師Java學習路線分享Java中的位移運算程式設計師Java
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java培訓分享學Java程式設計要注意什麼程式設計師Java
- 好程式設計師Java學習路線分享三大特性之多型程式設計師Java多型
- 好程式設計師Java學習路線分享Dubbo架構介紹程式設計師Java架構
- 好程式設計師Java學習路線分享多執行緒概念程式設計師Java執行緒
- 好程式設計師Java學習路線分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java學習路線分享Java弱引用的理解與使用程式設計師Java
- 好程式設計師Java學習路線分享Java案例-封裝JDBC工具類程式設計師Java封裝JDBC
- 好程式設計師Java學習路線分享怎麼理解Java物件導向程式設計師Java物件
- 好程式設計師分享Python從入門到精通最佳學習路線程式設計師Python
- 好程式設計師Java教程分享Java語法程式設計師Java
- 好程式設計師Java學習路線分享SpringMVC之請求和響應程式設計師JavaSpringMVC
- 好程式設計師Java學習路線分享如何處理中文引數程式設計師Java
- 好程式設計師Java學習路線分享MyBatis之關聯查詢程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享Spring常見面試題程式設計師JavaSpring面試題
- 好程式設計師web前端培訓分享學習JavaScript程式設計師Web前端JavaScript
- 好程式設計師Web前端教程分享Vue學習心得程式設計師Web前端Vue