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

爲何要學習JVM虛擬機

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

面試會遇到哪些問題?

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

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

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

適合人羣

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

會學到哪些內容?

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

基於JDK命令行工具的監控

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

基於JVisualVM的可視化監控

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

基於Btrace的監控調試

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

涉及到很是多的高級知識git

Tomcat性能監控與調優

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

Nginx性能監控與調優

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

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

JVM層GC調優

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

基於JDK1.8web

Java代碼層調優

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

javap能夠打印java中的字節碼,瞭解java的執行過程。面試

相信許多小夥伴都或多或少了解過上述知識,可是並非每個小夥伴都可以理解。此次就帶着你們來一塊兒學習!算法

## 推薦安全

文末

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

微信公衆號

相關文章
相關標籤/搜索