类的加载器
类的生命周期
字节码指令集
1、概述
- Java字节码对于虚拟机,就好像汇编语言对于计算机,属于基本执行指令。
- Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)而构成。由于Java虚拟机采用面向操作数栈而不是寄存器的结构,所以大多数的指令都不包含操作数,只有一个操作码。
- 由于限制了Java虚拟机操作码的长度为一个字节(即0~255),这意味着指令集的操作码总数不可能超过256条。官方文档:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html
- 熟悉虚拟机的指令对于动态字节码生成、反编译Class文件、Class文件修补都有着非常重要的价值。因此,阅读字节码作为了解Java虚拟机的基础技能,需要熟练掌握常见指令。
javap解析Class文件
Class文件结构
一、概述
1.1 字节码文件的跨平台性
- Java语言:跨平台的语言(write once, run anywhere)
- 当]ava源代码成功编译成字节码后,如果想在不同的平台上面运行,则无须再次编译。
- 这个优势不再那么吸引人了。 Python、PHP、Perl、Ruby、Lisp等有强大的解释器。
- 跨平台似乎己经快成为一门语言必选的特性。
- Java虚拟机:跨语言的平台
- Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联。无论使用何种语言进行软件开发,只要能将源文件编译为正确的Class文件,那么这种语言就可以在Java虚拟机上执行。可以说,统一而强大的Class文件结构,就是Java虚拟机的基石、桥梁。
- 所有的JVM全部遵守]ava虚拟机规范,也就是说所有的JVM环境都是一样的,这样一来字节码文件可以在各种JVM上运行。
垃圾回收器
一、垃圾回收器概述
按线程数分为串行垃圾回收器和并行垃圾回收器。
- 串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束。串行回收默认被应用在客户端的Client模式下的JVM中。
- 和串行回收相反,并行收集可以运用多个CPU同时执行垃圾回收,因此提升了应用的吞吐量,不过并行回收仍然与串行回收一样,采用独占式,使用“Stop-the-world”机制。
按工作模式分为并发式垃圾回收器和独占式垃圾回收器。
- 并发式垃圾回收器与应用程序交替工作,以尽可能减少应用程序的停顿时间。
- 独占式垃圾回收器一旦运行,就停止应用程序中的所有用户线程,直到垃圾回收过程完全结束。
垃圾回收算法
ssm整合
①使用idea创建maven项目如图:

