原创 生產環境服務器變慢,談談診斷思路和性能評估

🍀 整機:top 📌 uptime,系統性能命令的精簡版 🍀 CPU:vmstat 📌 查看 CPU(包含不限於) vmstat -n 2 3 一般vmstat工具的使用是通過兩個數字參數來完成的,第一個參數是採樣的時間間隔數單

原创 假如生產環境出現CPU佔用過高,談談分析思路和定位

🍀 結合 Linux 和 JDK 命令一塊分析 🍀 案例步驟 📌1、先用 top 命令找出CPU佔比最高的 📌2、ps -ef 或者 jps 進一步定位,得知是一個怎麼樣的一個後臺程序給我們惹事 📌3、定位到具體線程或者代碼

原创 G1 垃圾收集器

🍀 以前收集器特點 📌 年輕代和老年代是各自獨立且連接的內存塊; 📌 年輕代收集使用單 Eden+S0+S1 進行復制算法; 📌 老年代收集必須掃描整個老年代區域; 📌 都是以儘可能少而快速地執行 GC 爲設計原則。 🍀 G1 是

原创 怎麼查看服務器默認的垃圾收集器是哪個?生產上如何配置垃圾收集器的?談談對垃圾收集器的理解?

🍀 怎麼查看默認的垃圾收集器是哪個? JVM 參數:java -XX:+PrintCommandLineFlags -version 下圖紅色就是默認垃圾收集器 🍀 默認的垃圾收集器有哪些? java 的 gc 回收的類型主要有

原创 強引用、軟引用、弱引用、虛引用分別是什麼?

🍀 整體架構 🍀 強引用(默認支持模式) 當內存不足,JVM 開始垃圾回收,對於強引用的對象,就算是出現了 OOM 也不會對該對象進行回收,死都不收。 強引用是我們最常見的普通對象引用,只要還有強引用指向一個對象,就能表明對象還

原创 談談對 OOM 的認識

🍀 java.lang.StackOverflowError package com.brian.interview.study.jvm.oom; /** * Copyright (c) 2020 ZJU All Rights

原创 JVM 調優和參數配置,如何盤點查看 JVM 系統默認值

🍀JVM 的參數類型 📌標配參數 -version -help java -showversion 在 jdk 各個版本之間穩定,很少有大的變化 📌 x 參數(瞭解) -Xint: 解釋執行 -Xcomp: 第一次使用就編

原创 JVM 常用基本配置參數有哪些

🍀基礎知識 long totalMemory = Runtime.getRuntime().totalMemory(); // 返回 Java 虛擬機中的內存總量 long maxMemory = Runtime.getRun

原创 談談阻塞隊列

隊列 + 阻塞隊列 阻塞隊列,顧名思義,首先它是一個隊列,而一個阻塞隊列在數據結構中所起的作用大致如下圖所示: 當阻塞隊列是空時,從隊列中獲取元素的操作將會被阻塞。 當阻塞隊列是滿時,往隊列裏添加元素的操作將會被阻塞。 試圖從空

原创 死鎖編碼及定位分析

是什麼 死鎖是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力干涉那它們都將無法推進下去,如果系統資源充足,進程的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖

原创 談對公平鎖/非公平鎖/可重入鎖/遞歸鎖/自旋鎖的理解?請手寫一個自旋鎖

公平和非公平鎖 是什麼 公平鎖: 是指多個線程按照申請鎖的順序來獲取鎖, 類似排隊打飯, 先來後到。 非公平鎖: 是指多個線程獲取鎖的順序並不是按照申請鎖的順序,有可能後申請的線程比先申請的線程優先獲取鎖,在高併發的情況下, 有

原创 關於 volatile 你知多少???

談談你對 volatile 的理解 1、volatile 是 Java 虛擬機提供的輕量級的同步機制 保證可見性 不保證原子性 禁止指令重排 2、談談JMM(Java 內存模型) JMM(Java內存模型Java Memory

原创 談談原子類AtomicInteger的ABA問題?原子更新引用知道嗎?

ABA 問題怎麼產生的 CAS會導致"ABA問題"。 CAS算法實現一個重要前提需要取出內存中某時刻的數據並在當下時刻比較並替換,那麼在這個時間差類會導致數據的變化。 比如說一個線程one從內存位置V中取出A,這時候另一個線程tw

原创 我們知道ArrayList是線程不安全,請編碼寫一個不安全的案例並給出解決方案。

解決方案 1 package com.brian.interview.study.thread; /** * Copyright (c) 2020 ZJU All Rights Reserved * <p> * Proje

原创 CAS你知道嗎?

CAS 是什麼??? 1、比較並交換(CompareAndSet)通過簡單的Demo來看 package com.brian.interview.study.thread; /** * Copyright (c) 2020 Z