[JVM教程與調優] 爲什麼要學習JVM虛擬機?

爲什麼要學習JVM虛擬機

JVM在我們開發階段不會用到,但是到了生產環境中,那麼就會變得非常重要了。 爲什麼這麼說呢? 一方面,因爲我們的生產環境是比較複雜的。各種可能的問題都會出現,比如說:硬盤壞了、網絡壞了、CPU利用率高了等問題層次不窮。 另外一方面,在我們生產環境出現問題,還不好進行定位。因爲沒法隨便對我們的生產環境進行重啓,沒法隨便對我們的生產環境 的代碼進行修改,沒法隨便對我們的生產環境進行日誌的添加。所以說對生產環境進行監控是非常有必要的。 這次我們不會去講解基於硬件的監控,主要講解對Java應用的性能做監控和調優。 相信很多小夥伴,之前或多或少有一些瞭解,只是說沒有系統的學習過原理,並沒有真正的上手實踐過。 我們這次就帶着小夥伴們一起來學習JVM的性能調優。

面試會遇到哪些問題?

  • 生產環境發生了內存溢出該如何處理?
  • 生產環境給服務器分配多少內存合適?
  • 如何對垃圾收集器的性能進行調優?
  • 生產環境CPU負載飆高該如何處理?
  • 生產環境應該給應用分配多少線程合適?
  • 不加log如何確定請求是否執行了某一行代碼?
  • 不加log如何實時查看某個方法的入參與返回值?
  • JVM的字節碼是什麼東西?
  • 循環體中做字符串+拼接爲什麼效率低?
  • 字符串+拼接一定就是StringBuilder.append嗎?
  • String常量池是咋回事?
  • ii到底哪種寫法效率更高?

通過對JVM的學習你能收穫什麼呢?

  • 熟練使用各種監控和調試工具
  • 從容應對生產環境中遇到的各種調試和性能問題
  • 熟悉JVM的字節碼指令
  • 深入理解JVM的自動內存回收機制,學會GC調優
  • 從容應對面試中關於性能調優和調試的問題
  • 獨當一面走向高級工程師很重要的一步

適合人羣

1.如果你還不熟悉Java應用監控調優 2.如果你對Java應用監控調優感興趣 3.如果你想跳槽面試高級工程師

會學到哪些內容?

  • 基於JDK命令行工具的監控
  • 基於JVisualVM的可視化監控
  • 基於Btrace的監控調試
  • Tomcat性能監控與調優
  • Nginx性能監控與調優
  • JVM層GC調優
  • Java代碼層調優

基於JDK命令行工具的監控

  • JVM參數類型
  • 查看運行時JVM參數
  • 查看JVM統計信息
  • jmap+MAT實戰內存溢出(一定要學會)
  • jstack實戰死循環與死鎖(CPU高了,可以看的非常清楚)

基於JVisualVM的可視化監控

  • 監控本地Java進程
  • 監控遠程Java進程

基於Btrace的監控調試

  • Btrace安裝使用入門
  • Btrace使用詳解

涉及到非常多的高級知識

Tomcat性能監控與調優

  • Tomcat遠程debug
  • Tomcat-manager監控Tomcat
  • psi-probe監控Tomcat
  • Tomcat調優

Nginx性能監控與調優

  • ngx_http_stub_status監控連接信息
  • ngxtop監控請求信息
  • nginx-rrd圖形化監控
  • nginx調優

這次並不詳細介紹nginx,主要講解一些nginx中的一些調優方法。

JVM層GC調優

  • JVM內存結構
  • 垃圾回收算法
  • 垃圾收集器
  • GC日誌格式與可視化日誌分析工具
  • Tomcat的GC調優實戰

基於JDK1.8

Java代碼層調優

  • JVM字節碼指令與javap
  • ii,字符串+拼接原理
  • 常用代碼優化方法
  • 不止這些...

javap可以打印java中的字節碼,瞭解java的執行過程。

相信許多小夥伴都或多或少了解過上述知識,但是並不是每一個小夥伴都能夠理解。這次就帶着大家來一起學習!

推薦

文末

文章收錄至 Github: https://github.com/CoderMerlin/coder-programming Gitee: https://gitee.com/573059382/coder-programming 歡迎關注並star~

微信公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章