本内容分为三篇:
上篇为 JVM - 内存与垃圾回收篇
中篇为 JVM - 字节码与类的加载篇
下篇为 JVM - 性能监控与调优篇
JVM - 内存与垃圾回收篇内容分为:
JVM - 字节码与类的加载篇内容为第 18 章 - 第 21 章。
JVM - 性能监控与调优篇内容为第 22 章 - 第 26 章。
学习自 https://www.bilibili.com/video/BV1PJ411n7xZ。
JVM - 内存与垃圾回收篇内容学习内容的顺序图(从上往下,中间是核心):

在开发中,能够使用 final 修饰的时候,建议使用上,因为在编译期间就确定值,提高效率。
遇到多个 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 耗费的时间:4005ms,方法 2 消耗时间:7ms。
方法 2 的再次优化:new StringBuilder() 构造器里可以传入参数(长度),所以为了避免后续长度不够的扩容,可以在创建的时候确定长度。
因为个人的时间原因,没有从头到尾完全手写笔记,而是参考了别人的一些笔记框架,然后在学习的途中,改成自己的布局和知识理解,这里注明参考的笔记来源:
https://gitee.com/moxi159753/LearningNotes/tree/master/JVMhttps://www.zhihu.com/column/c_1303831719934214144https://gitee.com/moxi159753/LearningNotes/tree/master/JVM