目录
一、JVM内存与垃圾回收篇概述
JVM系列之1:内存与垃圾回收篇
JVM系列之2:字节码与类的加载篇
JVM系列之3:性能监控与调优篇
JVM系列之4:大厂面试题
课件:
01_JVM与Java体系结构
02_类加载子系统
03_运行时数据区概述及线程
04_程序计数器
05_虚拟机栈
06_本地方法接口
07_本地方法栈
08_堆
09_方法区
10_直接内存
11_执行引擎
12_StringTable
13_垃圾回收概述
14_垃圾回收相关算法
15_垃圾回收相关概念
16_垃圾回收器
二、如何看待Java上层技术与JVM
1、前言
作为Java工程师的你曾被JVM伤害过吗?
你是否也遇到过这些问题?
①、运行着的线上系统突然卡死,系统无法访问,甚至直接OOM!
②、想解决线上JVM GC问题,但却无从下手。
③、新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就JJ了
④、每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你实际项目中如何调优JVM参数,如何解决GC、OOM等问题,一脸懵逼。
(大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。)
开发人员如何看待上层框架
①、一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要,这其实是一种本末倒置的“病态”。
②、如果我们把核心类库的API比作数学公式的话,那么 Java 虚拟机的知识就好比公式的推导过程。
架构师每天都在思考什么?
①、应该如何让我的系统更快?
②、如何避免系统出现瓶颈?
知乎上有条帖子:应该如何看招聘信息,直通年薪50万+?
①、参与现有系统的性能优化,重构,保证平台性能和稳定性
②、根据业务场景和需求,决定技术方向,做技术选型
③、能够独立架构和涉及海量数据下高并发分布式解决方案,满足功能和非功能需求
④、解决各类潜在系统风险,核心功能的架构与代码编写
⑤、分析系统瓶颈,解决各种疑难杂症,性能调优等
2、面向人群及参考书目
3、Java及JVM简介
4、Java发展的重大事件
5、虚拟机与Java虚拟机
6、JVM的整体结构
7、Java代码执行流程
8、JVM的架构模型
9、JVM的生命周期
10、JVM的发展历程
三、为什么要学习JVM
①、面试的需要(BATJ、TMD、PKQ等面试都爱问)
②、中高级程序员必备技能:项目管理、调优的需要
③、追求极客的精神:比如:垃圾回收算法、JIT、底层原理
Java vs C++
垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得JVM内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础,也是Java工程师进阶的必备能力。
四、面向人群和课程特点
①、拥有一定开发经验的Java平台开发人员
②、软件设计师、架构师
③、系统调优人员
④、有一定的Java编程基础并希望进一步理解Java的程序员
⑤、虚拟机爱好者,JVM实践者
这个课怎么讲?
理论 > 代码
通俗、易懂、说人话
图接
五、官方规范下载与参考书目
Oracle | Cloud Applications and Cloud Platform 官方网站或者网购《深入理解Java虚拟机》
六、跨平台的语言Java和跨语言的平台JVM
https://www.tiobe.com/tiobe-index/ TIOBE语言热度排行榜
Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大,Java也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
①、作为一个平台,Java虚拟机扮演着举足轻重的作用。
Groovy、Scala、JRuby、Kotlin等都是Java平台的一部分
②、作为一种文化,Java几乎成为了"开源"的代名词。
第三方开源软件和框架。如Tomcat、Struts、MyBatis、Spring等。
就连JDK和JVM自身也有不少开源的实现,如OpenJDK、Harmony。
③、作为一个社区,Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之众多也令人咋舌。
Java:跨平台的语言