> 文章列表 > JVM学习笔记01

JVM学习笔记01

JVM学习笔记01

目录

一、JVM内存与垃圾回收篇概述

课件:

二、如何看待Java上层技术与JVM

1、前言

三、为什么要学习JVM

四、面向人群和课程特点

五、官方规范下载与参考书目

六、跨平台的语言Java和跨语言的平台JVM


一、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:跨平台的语言