JVM
文章平均质量分 91
java虚拟机相关的内容
pren2016
现任携程旅行网“资深移动开发工程师”,5年Android开发经验
展开
-
【Java进阶笔记】JVM内存模型(堆、栈、方法区、逃逸分析)
文章目录1. JVM 内存模型1.1. 程序计数器1.2. 虚拟机栈1.2.1. 栈帧1.2.2. 栈内存溢出1.3. 本地方法栈1.4. 堆1.5. 方法区1.5.1. 组成结构1.5.2. 方法区内存溢出2. 逃逸分析2.1. 标量替换2.2. 栈上分配2.3. 同步消除1. JVM 内存模型.java文件会被编译器编译为.class文件,然后由JVM中的类加载器加载各个类的字节码文件,加载完毕后,交由JVM执行。JVM会用一段空间来存储程序执行期间需要的数据和相关信息,这段空间一般称为Runt原创 2021-03-06 22:19:06 · 460 阅读 · 0 评论 -
【Java进阶笔记】垃圾回收器GC(finalize对象复活、强软弱虚引用)
文章目录1. 垃圾回收器 GC1.1. 确定回收对象的方法1.1.1. 引用计数法1.1.2. 可达性分析法1.2. 可作为GC Root的对象1.3. 回收时机1.3.1. finalize方法1.3.2. 对象复活1.4. 垃圾回收方法1.4.1. 标记清除法1.4.2. 复制法1.4.3. 标记整理法1.4.4. 分代收集法1.5. 垃圾收集器1.5.1. Serial 收集器1.5.2. ParNew 收集器1.5.3. Parallel Scavenge 收集器1.5.4. Serial Old原创 2021-03-06 22:37:01 · 530 阅读 · 0 评论 -
【Java进阶笔记】4种常量池
文章目录1. Class文件常量池1.1. 字面量1.2. 符号引用2. 运行时常量池3. 字符串常量池3.1. 创建字符串对象的方式3.1.1. 字面量创建3.1.2. 构造方法创建3.2. intern 方法4. 包装类对象常量池1. Class文件常量池class文件是一组二进制字节流,class文件常量池在编译阶段就已经确定。class文件常量池主要存放两大常量:字面量和符号引用。class JavaBean{ private int value = 1; public S原创 2021-03-06 22:42:08 · 278 阅读 · 1 评论 -
【Java进阶笔记】编译期处理(java语法糖)
文章目录1. 语法糖1.1. 默认构造方法1.2. 自动拆装箱1.3. 泛型取值1.4. 可变参数1.5. foreach 循环1.6. switch 字符串1.7. switch 枚举1.8. 枚举1.9. try-with-resources1.10. 方法重写时的桥接方法1.11. 匿名内部类1. 语法糖语法糖,指java编译器把 .java 源码文件编译为 .class 字节码文件的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是java编译器给我们的一个额外福利(给糖吃)原创 2021-03-06 22:57:34 · 601 阅读 · 0 评论 -
【Java进阶笔记】字符串与StringTable(字符串常量池)
文章目录1. 字符串1.1. 字符串的创建(JDK8)1.1.1. char[]数组创建1.1.2. byte[]数组创建1.1.3. int[]数组创建1.1.4. 从已有字符串创建1.1.5. 字面量创建1.1.6. 拼接创建1.2. JDK 9 的变化1.2.1. 内存结构的变化1.2.2. 拼接方式的变化1.2.3. 默认的拼接策略2. StringTable2.1. 家养与野生2.2. StringTable 的存储位置2.3. intern() 方法2.3.1. StringTable 中已存在原创 2021-03-06 22:53:14 · 579 阅读 · 0 评论 -
【Java进阶笔记】字节码与类加载(带你读懂字节码)
文章目录1. 类文件结构1.1. 魔数1.2. 文件版本1.3. 常量池1.4. 访问标识与继承信息1.5. 字段信息1.6. 方法信息1.7. 属性信息2. 字节码指令2.1. 入门2.2. Javap 工具2.3. 方法执行流程2.4. 条件判断指令2.5. 循环控制指令2.6. 为什么 `x=x++` 无效2.7. 构造方法2.7.1. \()V 方法2.7.2. \()V 方法2.8. 方法调用2.9. 异常处理2.9.1. try-catch-finally2.9.2. finally 出现 re原创 2021-03-06 23:00:07 · 547 阅读 · 0 评论 -
【Java进阶笔记】运行期优化(即时编译、反射优化)
文章目录1. 即时编译1.1. 分层编译1.2. 方法内联2. 反射优化1. 即时编译1.1. 分层编译JVM 的执行状态分为5个层次:0层,解释执行(Interpreter)。1层,使用 C1 即时编译器编译执行(不带profiling)。2层,使佣 C1 即时编译器编译执行(带基本的profiling)。3层,使用 C1 即时编译器编译执行(带完全的profiling)。4层,使用 C2 即时编译器编译执行。profiling 是指在运行过程中收集一些程序执行状态的数据, 例原创 2021-03-06 23:02:50 · 272 阅读 · 0 评论