Java语言编写代码非常简单,也很容易入门,非常适合开发各种企业级应用和业务系统。 一个众所周知的事实是: 用起来越简单的系统, 其背后的实现就越复杂。 道理很容易理解, 系统的内部实现考虑了各种极端的情况,对用户屏蔽了各种复杂性。 作为支撑庞大的Java生态系统的基石, JVM内部实现是非常复杂的。 据统计,OpenJDK的实现代码已经超过1000万行。
最火热的JVM知识是什么? “JVM调优” “JVM性能优化”。 JVM难不难? 自然是 “难者不会,会者不难。” 万丈高楼平地起, 没有掌握一定的基础知识, 学过的各种高深知识和技巧,也就转眼即忘,书到用时方恨少。 掌握好基础知识,学而时习之,经常使用各种工具并熟练起来,自然就能深入掌握一门技能。 理论结合实践,掌握JVM相关知识,熟练各种工具的使用,是Java工程师职业进阶中不可或缺的。
学就要学会理论,掌握实现原理。 理解了Java标准平台的JVM,稍微变通一下,碰到 Android 的 ART, Go的虚拟机, 以及各种语言的垃圾收集实现, 都会很容易理解。
- Classloder
- Java虚拟机栈
- 本地方法栈
- 程序计数器
- Java堆
- 方法区
- 运行时常量池
- DirectBuffer
- JIT
- GC算法与分代理论
- G1
- CMS
- GC触发条件
- 常用参数说明
- GC调优方法
- OOM简介
- Java内存模型
- 对象的创建过程
- 对象的内存布局
- 线程不安全问题
- Lock与Monitor
- 常见的锁分类
- 死锁
- 锁优化
- 内置命令行工具
- JMX与图形客户端监控
- GC性能分析
- CPU热点分析
- 内存分配分析
- 远程Debug简介
- 远程监控相关工具
- 性能指标采集
- Arthas诊断工具
- 监控本地JVM
- 监控远程JVM
- 分析对象的内存占用
- 动手写内存泄露代码
- 体验巨无霸对象
- OOM与内存Dump分析
- 自己动手写死锁
- GC调优案例
- 体验JNI与堆外内存
- 加深对Java编程语言的理解
- 掌握JVM相关基础,熟悉Java程序运行环境
- 理解GC算法,熟悉常用GC的适用场景
- 了解内存溢出的原因和解决思路
- 学会内存泄漏问题排查
- 学会分析Java对象和内存占用
- 了解各种锁的优缺点
- 熟练使用JVisualVM等工具
- 加深对Java编程语言的理解
- 掌握JVM相关基础,熟悉Java程序运行环境
- 熟悉GC算法和适用场景
- 了解内存溢出的原因并解决
- 排查内存泄漏问题
- 分析Java对象和内存占用
- 了解各种锁的优缺点
- 熟练使用JVisualVM等工具
|1. | 基础试题考核 | 50% | |2. | 大作业 | 50% |