不动笔墨不读书,先把书读厚,再把书读薄是我学习方式。
所以等理解了再整理一次笔记,目前笔记和视频一一对应。
笔记连载中
《尚硅谷2020最新版宋红康JVM》
第1章:JVM与Java体系结构
01-JVM内存与垃圾回收篇概述
对 Java 程序员来说,Java 虚拟机(JVM )可以说是既熟悉又神秘,很少有 Java 程序员能够抑制自己探究它的冲动。可惜透彻讲解 JVM 的书籍(尤其是国内出版的)简直少之又少,这里就更不要说能系统讲解 JVM 的视频教程了。尚硅谷的这套 JVM 从入门到精通,绝对可谓是研究 JVM 的程序员及广大 JVM 爱好者的福音。
课程内容分为四个篇章
- 内存与垃圾回收篇
- 字节码与类的加载篇
- 性能监控与调优篇
- 大厂面试篇
本套视频使用到的软件
# JDK1.8 目前企业用的比例最高的JDK,本课程基于java8
# JClassLib_windows.zip 用它读懂字节码文件
# MemoryAnalyzer-1.9.0.20190605-win32.win32.x86_64.zip 内存分析工具
# PXBinaryViewerSetup.exe 读取字节码的软件
使用到的资料
java虚拟机规范可以去官网下载,也可以去买jvm相关的书。
内存与垃圾回收篇目录
02-如何看待Java上层技术与JVM
作为 Java 工程师的你曾被 JVM 伤害过吗?你是否也遇到过这些问题?
- 运行着的线上系统突然卡死,系统无法访问,甚至直接OOM!
- 想解决线上 JVM GC 问题,但却无从下手。
- 新项目上线,对各种 JVM 参数设置一脸茫然,直接默认吧,然后就 JJ了
- 每次面试之前都要重新背一遍 JVM 的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优 JVM 参数,如何解决 GC、OOM 等问题,一脸懵逼。
大部分Java开发人员,除了会在项目中使用到java平台相关的高精尖技术,对与Java技术的核心Java虚拟机了解很少
开发人员如何看待上层框架?
一些有一定工作经验的开发人员,打心底觉得SSM,微服务等上层技术才是重点,基础技术并不重要,这其实是一种本末倒置的“病态”。
如果我们把核心类库的API比作数学公式的话,那么Java虚拟机的知识就好比公式的推导过程
计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编程程序代码。但事实上计算机并不认识高级语言
架构师每天都在思考什么?
- 应该如何让我的系统更快?
- 如何避免系统出现瓶颈?
03-为什么要学习JVM
为什么要学习JVM?
- 面试的需要(面试爱问)
- 中高级程序员必备技能
- 项目的管理,调优的需要
- 追求极客的精神(更高追求)
- 理解垃圾回收算法,JIT(即时编译),底层原理
Java对比C++
java抛弃了C/C++的两大缺点,Java可以内存动态分配,有垃圾回收技术;
自动分配的内存要想再次使用就需要用到垃圾回收技术
垃圾回收机制为我们打理了很多繁琐的工作,大大提高开发的效率,但是垃圾回收机制不是万能的,
懂得JVM内部的内存结构,工作机制,是设计高扩展性应用和诊断运行时问题的基础,
也是java开发工程师进阶的必备能力。
04-面向人群和课程特点
本课程面向人群
- 拥有一定开发经验的 Java 平台开发人员
- 虚拟机爱好者,JVM 实践者
- 有一定的 Java 编程基础并希望进一步理解 Java 的程序员
- 软件设计师,架构师
- 系统调优人员
先学习怎么使用,再去了解原理是什么!别一开始就打消了积极性。
调优在课程第三篇会讲,会用到很多具体的监控工具
调优:代码层面、内存层面
代码层面i++,++i有何区别?
我们需要把代码编译成字节码文件,然后再反编译才能解释区别。
课程特点
- 讲理论的时间>讲代码的时间
- 通俗易懂说人话
- 图解
05-官方规范下载与参考书目
Java语言规范和JVM规范,推荐看8或者11,可以去官网下载https://docs.oracle.com/javase/specs/index.html
英语薄弱者请无视。
不推荐买Java虚拟机规范这本书,规范未必能看得懂。推荐买深入理解Java虚拟机,我们要买的是规范的解读。
JVM规范是Oracle公司发布的标准,随着JDK的不断更新,JVM规范也在不断迭代。规范是虚的,属于天上飞的理念,落地的实现是具体不同版本的Java虚拟机。JVM规范有很多版本,java虚拟机也有很多版本,我们要学的是官方正统的HotSpot虚拟机.
06-跨平台的语言Java和跨语言的平台JVM
跨平台的语言Java
世界上没有最好的语言,只有最适用于具体应用场景的编程语言。Java目前仍是世界上最流行的编程语言。
Java 不再是简简单单的一门计算机语言了,它更是一个平台,一种文化,一个社区,形成了庞大的生态。
java的特点之一:跨平台
Java的官网介绍
The Java Virtual Machine is the cornerstone of the Java platform. It is thecomponent of the technology responsible for its hardware- and operating system-independence, the small size of its compiled code, and its ability to protect usersfrom malicious programs…
Java虚拟机是Java平台的基石。它是该技术的组成部分,负责其硬件和操作系统的独立性,以及负责编译后代码的小尺寸,它具有保护用户免受恶意程序攻击的能力…
跨语言的平台JVM
Java虚拟机根本不关心运行在其内部的程序到底是使用哪种语言编写的,它只关心字节码文件。只要编译后的字节码文件符合Java虚拟机的规范,它就是一个有效的字节码文件,就能被Java虚拟机识别并装载运行。