1.深入理解Java虚拟机:JVM高级特性与最佳实践目录
2.Java中9种常见的源码CMS GC问题分析与解决(下)
深入理解Java虚拟机:JVM高级特性与最佳实践目录
本书深入探索Java虚拟机的奥秘,从入门到高级特性,源码带你领略JVM的源码世界。第一部分:走进Java
第1章以Java技术体系和历史为起点,源码展望Java技术未来,源码包括模块化、源码求子串源码混合语言、源码多核并行和语言语法的源码扩展。实战环节教你自行编译JDK,源码从获取源码到构建环境的源码搭建,体验Java技术的源码底层实现。第二部分:自动内存管理机制
第2章讲解Java内存区域,源码如程序计数器、源码虚拟机栈、源码本地方法栈等,源码财务指标源码查询以及内存溢出的处理。通过实例演示,理解OutOfMemoryError的各类表现形式。第3章:垃圾收集器与内存分配
这部分深入剖析垃圾收集算法,如标记-清除、复制、标记-整理和分代收集,个股轮动指标源码介绍各类收集器如Serial、ParNew等,以及内存分配策略的原理。第三部分:虚拟机执行子系统
第6章讲解类文件结构,包括Class文件的版本和内容。第7章探讨类加载机制,如加载时机、起跑线指标源码过程和类加载器的运作。第四部分:程序编译与代码优化
第章介绍早期编译期优化,如Javac编译器的工作原理,以及Java语法糖的实现。第章关注运行期优化,如HotSpot虚拟机的即时编译器和编译优化技术。第五部分:高效并发
第章讲解Java内存模型和线程,短线搏杀主图源码以及第章的线程安全与锁优化策略,如何实现高性能并发。Java中9种常见的CMS GC问题分析与解决(下)
Java中9种常见的CMS GC问题分析与解决(下)
美团技术团队通过对内部GC问题的深入研究和总结,针对Hotspot VM中CMS + ParNew组合的复杂场景,提供了深入的分析和实用的解决方案。本文主要聚焦于以下几个关键问题:场景六:单次CMS Old GC耗时长
分析了长时间STW的原因,主要集中在Final Remark阶段,通过理解核心代码和步骤,提出了针对性的优化策略。
场景七:内存碎片与收集器退化
探讨了内存碎片导致的收集器退化,包括晋升失败和并发模式失败,提供了解决策略,如监控内存碎片率和避免大对象产生。
场景八:堆外内存 OOM
剖析了堆外内存泄漏的两种原因,通过NMT和JNI调用的排查方法,提供了解决方案。
场景九:JNI引发的GC问题
针对JNI调用可能导致的GC,解释了GC Locker机制及其潜在影响,并给出了相应的策略。
整体而言,处理这些问题的关键在于理解根源、合理配置参数、监控内存使用情况,并在必要时深入阅读源码。在遇到GC问题时,主动分析和优化是提升系统性能的关键。