JMM 应用总结
公司内接手的老项目近段时间遇到了内存瓶颈,新发版 GC 日志刷个不停,且集中在 YGC,显然有不自然的内存分配,看来内存优化是绕不过了。
在 Java 技术栈内,对内存的分析优化主要集中在堆中,往往需要先使用一些内存分析工具导出堆的一份快照,然后查看是哪些对象在浪费空间,它们可能是非常大的、非常短命的。
除了 JMM,对宿主机的内存管理原理也是有必要掌握的,这样能从底层的角度来进行解释 JMM 的原理,在针对 JMM 进行调参的时候也能更有把握(和运维撕的时候也更不容易被忽悠),鉴于现在的生产环境绝大多数都是 Linux,因此我也会对 Linux 的虚拟内存管理机制作一个简单分析。