YaPiBlog


You look look you one day day de

JVM高级特性-内存模型与线程

硬件效率一致性处理 由于计算机存储设备与处理器的运算速度有几个数量级的差距,为了尽可能提升效率,计算机系统加入了一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存中同步回内存之中。 在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一个主内存。当多个处理器运算任务都涉及同一块主内...

JVM高级特性-虚拟机执行引擎

执行引擎 运行时栈帧结构 栈帧是用于支持虚拟机运行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法的调用开始到执行完成都对应一个栈帧在虚拟机栈中入栈到出栈的过程。 局部变量表 局部变量表是一组变量值的存储空间,用于存放方法参数和方法内定义的局部变量。局部变量表的容量已变量...

JVM高级特性-虚拟机执行子系统

虚拟机执行子系统 class文件 class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件之中。当遇到需要占用8字节以上空间的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。 class文件采用类似于c语言的伪结构来存储。这种伪机构只有两种数据类型。无符号数和表。 无符号数属于基本的数据类型,以u1,u2,u4,u8分别代表1个...

JVM高级特性-垃圾收集与内存分配策略

对象存活判断 引用记数算法 可达性分析算法 引用计数算法 给对象中添加一个引用计数器,每当一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 很难解决对象之间循环引用的问题 可达性分析算法 通过一系列的称为GC ROOTS 的对象作为起点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC RO...

JVM高级特性-自动内存管理机制

自动内存管理 运行时数据区域 方法区(共享) 堆(共享) 虚拟机栈 本地方法栈 程序计数器 程序计数器 一块比较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时,就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 线程私有...

JVM高级特性-关于JAVA

技术体系 1991.4 -> James Gosling -> Oak 1995.5.23 -> 更名为Java 1996.1.23 -> java 1.0 -> 第一个虚拟机(Sun Class VM) 并不是只有java运行在java虚拟机上,广义上来讲,Clojure,JRuby,Groovy等运行于java虚拟机上的语言及其他相关程序...