今天面試一個senior的老同事 聊的GC很細節 當聊到jvm優化時 老兄提到了 給jvm加參數取消 System.gc() 來避免gc的頻繁調動 由於在netty中顯式調用的地方因此有點疑惑 人走後特地查了下 soga面試
Direct Memory滿了以後,系統不會自動回收這段內存; 而是要等Tenured Generation滿觸發GC時,Direct Memory纔會被跟着回收。jvm
因此這一塊很容易發生內存溢出. 爲了防止這種事發生,你要麼不把Heap設的過多,該Full GC的時候就Full GC; 要麼在JVM參數裏不由止System.gc(),由於NIO的實現裏會本身調用System.gc()優化
另附上 -XX:+DisableExplicitGC //禁用System.gc()調用netty