JVM
在我們開發階段不會用到,但是到了生產環境中,那麼就會變得非常重要了。
爲什麼這麼說呢?
一方面,因爲我們的生產環境是比較複雜的。各種可能的問題都會出現,比如說:硬盤壞了、網絡壞了、CPU利用率高了等問題層次不窮。
另外一方面,在我們生產環境出現問題,還不好進行定位。因爲沒法隨便對我們的生產環境進行重啓,沒法隨便對我們的生產環境
的代碼進行修改,沒法隨便對我們的生產環境進行日誌的添加。所以說對生產環境進行監控是非常有必要的。
這次我們不會去講解基於硬件的監控,主要講解對Java應用的性能做監控和調優。
相信很多小夥伴,之前或多或少有一些瞭解,只是說沒有系統的學習過原理,並沒有真正的上手實踐過。
我們這次就帶着小夥伴們一起來學習JVM
的性能調優。
面試會遇到哪些問題?
- 生產環境發生了內存溢出該如何處理?
- 生產環境給服務器分配多少內存合適?
- 如何對垃圾收集器的性能進行調優?
- 生產環境CPU負載飆高該如何處理?
- 生產環境應該給應用分配多少線程合適?
- 不加log如何確定請求是否執行了某一行代碼?
- 不加log如何實時查看某個方法的入參與返回值?
- JVM的字節碼是什麼東西?
- 循環體中做字符串+拼接爲什麼效率低?
- 字符串+拼接一定就是StringBuilder.append嗎?
- String常量池是咋回事?
- i與i到底哪種寫法效率更高?
通過對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
- i與i,字符串+拼接原理
- 常用代碼優化方法
- 不止這些...
javap
可以打印java
中的字節碼,瞭解java
的執行過程。
相信許多小夥伴都或多或少了解過上述知識,但是並不是每一個小夥伴都能夠理解。這次就帶着大家來一起學習!
推薦
文末
文章收錄至 Github: https://github.com/CoderMerlin/coder-programming Gitee: https://gitee.com/573059382/coder-programming 歡迎關注並star~