- JVM - 知识体系
- JVM 是 Java Virtual Machine(Java虚拟机)的缩写,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
目录
本内容分为三篇:
上篇为 JVM - 内存与垃圾回收篇
中篇为 JVM - 字节码与类的加载篇
下篇为 JVM - 性能监控与调优篇
JVM - 内存与垃圾回收篇内容分为:
- 类加载子系统:第 2 章(类加载子系统)
- 运行时数据区:第 3 章(运行时数据区概述及线程) - 第 11 章(直接内容)
- 执行引擎:第 12 章(执行引擎)
- 面试常问:第 13 章(StringTable)
- 垃圾回收机制:第 14 章(垃圾回收概述) - 第 17 章(垃圾回收期)
JVM - 字节码与类的加载篇内容为第 18 章 - 第 21 章。
JVM - 性能监控与调优篇内容为第 22 章 - 第 26章。
学习自 https://www.bilibili.com/video/BV1PJ411n7xZ
。
JVM - 内存与垃圾回收篇内容学习内容的顺序图(从上往下,中间是核心):
# 技巧
# 技巧1
在开发中,能够使用 final 修饰的时候,建议使用上,因为在编译期间就确定值,提高效率。
# 技巧2
遇到多个 String 相加,应该换成 StringBuilder
public static void method1(int highLevel) {
String src = "";
for (int i = 0; i < highLevel; i++) {
src += "a"; // 每次循环都会创建一个 StringBuilder 和 String 对象(应该避免)
}
}
public static void method2(int highLevel) {
// 只需要创建一个StringBuilder
StringBuilder sb = new StringBuilder(); // 优化:StringBuilder s = new StringBuilder(highLevel);
for (int i = 0; i < highLevel; i++) {
sb.append("a");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
方法 1 耗费的时间:4005ms,方法 2 消耗时间:7ms。
方法 2 的再次优化:new StringBuilder()
构造器里可以传入参数(长度),所以为了避免后续长度不够的扩容,可以在创建的时候确定长度。
# 参考
因为个人的时间原因,没有从头到尾完全手写笔记,而是参考了别人的一些笔记框架,然后在学习的途中,改成自己的布局和知识理解,这里注明参考的笔记来源:
- 1 - 17 篇(部分)参考
https://gitee.com/moxi159753/LearningNotes/tree/master/JVM
- 18 - 21 篇(部分)参考
https://www.zhihu.com/column/c_1303831719934214144
- 22 - 26 篇(部分)参考
https://gitee.com/moxi159753/LearningNotes/tree/master/JVM
更新时间: 2024/11/02, 18:07:00