
《深入理解Java虚拟机》学习笔记
《深入理解Java虚拟机》学习笔记
放空91
这个作者很懒,什么都没留下…
展开
-
【深入理解Java虚拟机】第十二章 Java内存模型与线程
12.3 Java内存模型-JMM12.3.1 主内存与工作内存JMM主要目标是定义程序中各个变量的访问规则此处的变量包括实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有。JMM规定所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作都在工作内存中进行,不能直接读写主内...原创 2019-03-05 10:30:31 · 185 阅读 · 0 评论 -
【深入理解Java虚拟机】第十章 早期(编译期)优化
10.2 Javac编译器10.2.2 解析与填充符号表1、 词法、语法分析词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是程序萹蓄过程的最小元素,而标记时编译过程的最小元素,关键字、变量名、字面量、运算符都可以成为标记。语法分析是根据Token序列构造抽象语法树的过程,抽象语法树是一种用来描述程序代码语法结构的树形表示方式,语法树的每一个节点都代表着程序代码中的一个语...原创 2019-03-05 10:27:55 · 365 阅读 · 0 评论 -
【深入理解Java虚拟机】第七章 虚拟机类加载机制
7.2 类加载时机类在JVM中的生命周期:加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类加载过程必须按照这种顺序开始。但解析则不一定:某些情况下可在初始化阶段之后再开始(java的运行时绑定)。对于加载阶段,由JVM具体实现来自由把握。对于初始化阶段,以下情况必须立即进行初始化:遇到new、getstatic、putstatic或invokestatic字节码指令时...原创 2019-03-05 10:27:02 · 191 阅读 · 0 评论 -
【深入理解Java虚拟机】第三章 垃圾收集器与内存分配策略
3.2 对象已死吗3.2.1 引用计数法给对象添加一个引用计数器,当有一个地方引用它时,值加1;当引用失效时,值减1;任何时候计数器为0的对象就是不可能再被使用的。但主流的JVM没有选用引用计数法来管理内存,因为很难解决对象之间相互循环引用的问题3.2.2 可达性分析算法通过一系列称为“GC Root”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC...原创 2019-01-20 11:10:23 · 229 阅读 · 0 评论 -
【深入理解Java虚拟机】第二章 Java内存区域与内存溢出异常
2.2 运行时数据区域2.2.1 程序计数器程序计数器是一块较小的内存空间,是唯一一个在JVM规范中没有规定任何OutOfMemoryError情况的区域。可看做是当前线程所执行的行号指示器。用来指示线程选取下一条需要执行的字节码。各条线程之间计数器互相不影响,独立存储,“线程私有”的内存。线程在执行一个java方法,该计数器记录的是正在执行的虚拟机字节码指令地址执行Native方法...原创 2019-01-19 16:15:03 · 188 阅读 · 0 评论