-
1 # 大渝IT
-
2 # 程式設計師欣宸
我是從自己的工作經歷來回答的,首先要對jvm有基本的瞭解,才能更好的會使用jstat,jmap,jstsck來解決實際問題,接下來由於工作的需要,僅僅瞭解多執行緒和執行緒池是不夠的,這時候就開始學習Java併發程式設計,並在工作中常用到這些知識,後面隨著興趣開始學習jvm,隨著學習和工作的深入,這些知識的作用會慢慢展現出來,前提是不要把自己定位成一個實現業務需求的角色,要多深入學習和實踐,或者多看些優秀的開源作品。
-
3 # kid7157887
個人感覺沒有啥先後順序,不過先學jvm你能讀明白位元組碼,一些多執行緒的例子反編譯過來看位元組碼能明白一些事,比如監視器怎麼加的。或者你知道了jvm記憶體幾個區域,有的地方不涉及到共享問題,也不會執行緒不安全。多執行緒可以看看java高併發程式設計這本書。jvm可以看看深入java虛擬機器這本書。有條件的話,經常用生產上的機器解決一些問題,比如記憶體滿了用jmap和mat分析,這樣能加強你對jvm熟悉,同時也可以對生產環境進行jvm調優。如果出現應用卡死,可能有死鎖,大事物,死迴圈這樣的,你可以用jstack和jstat去分析執行緒棧,會學到一些多執行緒的知識。同時你可以用gceasy這個線上工具把你的堆疊上傳上去,有個視覺化的分析。另外阿里的arthas是個除錯神器,jprofiler可以視覺化很多東西。xxfox也是個線上學習jvm的好網站。
如果你願意的話,當你想深入執行緒的話,可以看看posix執行緒規範pthread和linux核心的一些知識,能加強你對java執行緒的理解以及java記憶體分配的理解。
除了書,推薦你極客時間的java併發程式設計實戰,深入拆解jvm虛擬機器。如果你還想對jvm再深入的話,可以看看openjdk原始碼,需要有c的底子,還有自己動手寫java虛擬機器這本書。
回覆列表
JVM 是java的虛擬機器 是實現java 位元組碼到機器語言的一個轉換。
學習jvm其實就是要學習 java。
這些年給予jvm衍生了一些其他語言,比如 大資料 spark的推薦語言 Scala。
並行程式設計,有大概兩種理解:
1. 軟體語言級別的多執行緒,Golang的協程等,Golang可以支援 多核CPU的並行程式設計。
2. 硬體級別,比如電子通訊領域的 FPGA 可程式設計邏輯陣列。也是半導體行業晶片製作前的驗證步驟。
先選行業,再選技術。