面試為什么需要了解JVM


匠心零度 轉載請注明原創出處,謝謝!

說在前面

如果你經常注意面試題,你會發現現在面試題多多少少會含有jvm相關的面試題,之前也把一些jvm面試題匯總了下:面試題系列一,那么為什么現在面試需要了解或者問面試題呢?

主題

談談自己的理解,概括為以下幾個方面:

  • 的確很重要。
  • 供大於求。
  • 面試風氣。

下面就針對這幾點談談。

的確很重要

隨着互聯網的發展,高並發高可用、快速響應成為軟件的必須,而JVM與這些有着密切關聯。之前JVM系列好多都是一些由於STW影響到快速響應問題,忽然網站慢一下(抖動下)等問題,下面談談最近通過JVM排查到的高並發高可用問題。(在高可用高並發下面問題原因可能會很多,比如cpu異常高、磁盤IO高、SWAP空間等,有可能很多問題都是綜合性的問題)

以前在我的認知里面,如果服務運行有問題,最簡單有效快速地辦法就是重啟,最近遇到了問題打破了我對該方法的認知。

某業務線最近集群服務升級忽然上線上去不能提供服務,之后影響到整個集群,查看當時服務器情況,負載、cpu、io、swap等都正常,查看日志就是卡在最后一行不動了(也沒有發現OOM,等任何異常)。

如果是之前估計這個問題我也就排查不了了,現在排查問題多了一個維度JVM(的確有時候需要考慮的,並且現在很多監控工具都會考慮到JVM的),查看gcutil查看比例,發現from 100% eden 100% old 100%但是服務就是沒有OOM,執行任何都命令都非常緩慢了(更別談訪問請求了),查看具體gc日志發現concurrent mode failure 並且時間很長,猜測就是一瞬間量把內存給用完了,導致from 100% eden 100% old 100%現象,最終不能提供服務,之后其他集群節點也陸續出現了此類情況,重啟無效,現象一樣很快就from 100% eden 100% old 100% 不能提供服務,沒辦法,一直重啟直到都啟動好了可以正常提供服務。

留了一台進行排查問題,執行jmap -histo pid無果,加-F也無果,后來執行jmap -dump:format=b,file=heap.bin pid (6G堆執行了3-4個小時左右)通過MAT分析查看,發現都是某個邏輯產生的數據,占用了5G左右(char[]、String、Map、List等都與某個邏輯代碼有關)猜測是該問題(由於涉及到公司具體業務不方便截圖,只能大概說明下),很容易定位到代碼最后是由於並發沒有考慮好,邏輯寫的也有點問題導致的,進行修改處理,問題解決,出了JVM相關問題可以進行排查解決。

很能很多人認為線上出現問題可以排查繼續解決問題的人牛逼,其實錯了,真正牛逼的人都是在問題產生前就解決了(需要意識里面轉變和學習思考提高的地方)。

下面看個例子就明白了,是Charles告訴我的,我覺得放在這里特別合適:

春秋戰國時期,有位神醫被尊為“醫祖”,他就是“扁鵲”。一次,魏文王問扁鵲說:“你們家兄弟三人,都精於醫術,到底哪一位最好呢?”扁鵲答:“長兄最好,中兄次之,我最差。”文王又問:“那么為什么你最出名呢?”扁鵲答:“長兄治病,是治病於病情發作之前,由於一般人不知道他事先能鏟除病因,所以他的名氣無法傳出去;中兄治病,是治病於病情初起時,一般人以為他只能治輕微的小病,所以他的名氣只及本鄉里;而我是治病於病情嚴重之時,一般人都看到我在經脈上穿針管放血,在皮膚上敷葯等大手術,所以以為我的醫術高明,名氣因此響遍全國。”

如果能在編碼時候就考慮到JVM,做到面向JVM編程那就更牛逼了,如果能在上線前查閱到此類JVM問題或者是OOM問題以及一些其他問題那也就好了。

綜述:因此這些成為必不可少的技能,所以面試需要了解,因為公司可能會面臨該問題。

供大於求

現在不像以前了,以前會點html都好找工作,現在由於學習軟件的人越來越多,而且每年大學生都在畢業(而老一輩的也很少換工作)人只會越來越多,有個笑話,隨便在大街上扔硬幣砸到的那個可能就是搞軟件的,現在人員太多,公司為了區分,會多添加維度,每多一個維度可能就會刷掉一批人,核心供大於求,所以我們也必須朝着這些大的方向努力,使得自己的競爭力比別人強。

面試風氣

簡單的問題都不好意思問,怕面試者鄙視面試公司問的問題。現在有一股妖風,不管啥公司都慢慢像阿里這樣的公司靠近,面試不問點jvm、並發、分布式都不好意(雖然公司可能沒有用到,雖然可能僅僅CURD),老是覺得問問這些顯得逼格高點,不管處於什么原因很多公司的確都在學習他們,都在問這些問題,那么我們就朝着這些大的方向努力也是沒錯的,如果朝着這些方向努力就是他們需要的人才,那么也就對了。

類似其他,比如高並發 鎖、分布式、緩存等都可以考慮考慮這樣思考,你會有不一樣的收獲的。


如果讀完覺得有收獲的話,歡迎點贊、關注、加公眾號【匠心零度】,查閱更多精彩歷史!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM