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的可視化監控
基於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~