虚拟机
卫星是我朋友
既然无法改变,那就欣然上路。
展开
-
Java虚拟机--垃圾回收与内存分配
1、可回收对象的判定用来判断哪些对象可以被回收1)引用计数法给对象添加一个引用计数器,每当它被一引用时,计数器加1;当引用失效时,计数器减1。计数器为0,就表示可以回收了。缺点:难以解决两个对象之间的循环引用2)可达性分析算法通过一系列称为“GC Roots”的对象作为起始点,当一个对象到GC Roots没有任何引用链(Reference Chain)时,就证明此对象不可达。如下图,虽然object原创 2016-08-03 17:32:57 · 557 阅读 · 0 评论 -
Java虚拟机--内存区域划分
运行时数据区域 在运行时数据区内,白色部分的是线程私有的:虚拟机栈、本地方法栈、程序计数器程序计数器:线程私有,可以看做当前线程所执行的字节码的行号指示器。若线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令地址;若正在执行Native方法,则计数器为空。Java虚拟机栈:线程私有, 生命周期与线程相同。通常所讲的“堆”内存,“栈”内存的“栈”,与虚拟机栈或是说与虚拟机栈中原创 2016-08-03 15:24:55 · 371 阅读 · 0 评论 -
Java虚拟机--类加载机制
1、概述类从加载到虚拟机内存,到卸载出内存,分为:加载、验证、准备、解析、初始化、使用、卸载。 一般编程人员只用关注:加载、连接(分为验证、准备、解析)、初始化即可。加载、验证、准备、解析、初始化、卸载这5个阶段顺序是确定的。而解析阶段不一定:可以在初始化之后再开始,这是为了支持Java的动态绑定。什么时候进行初始化? 以上四条为主动引用,而被动引用,如下所示,不会引发类初始化 1. 子类原创 2016-08-03 22:46:42 · 360 阅读 · 0 评论 -
Java虚拟机--编译期优化
涉及到: 注解的处理 泛型与类型擦除 自动拆箱、装箱原创 2016-08-03 23:32:08 · 438 阅读 · 0 评论 -
Java虚拟机--内存模型与线程
0、内存模型内存模型,可以理解为特定操作协议下,对指定的内存或高速缓存进行读写访问的过程抽象。C/C++直接使用物理硬件和操作系统的内存模型,会有不同平台的差异性。1、Java内存模型参考书籍:深入理解Java内存模型 Java虚拟机规范试图定义一种Java内存模型,来屏蔽掉不同平台的差异。 1)主存与工作内存主内存与工作内存与Java内存区域中的Java堆、栈、方法并不是一个层次的内存划分(抽象原创 2016-08-03 23:33:54 · 460 阅读 · 0 评论 -
Java虚拟机--线程安全与锁优化
线程安全在Java中可以对各种操作共享数据分为以下5类:不可变、绝对线程安全、相对线程安全、线程兼容、线程对立。1)不可变用final修饰的基本变量、行为不会对自己的状态产生影响的对象(比如,把自己的状态设置为final的)、枚举类、java.lang.Nuncer的部分子类(Long,Double等的数值包装类)、BigInteger和BigDecimal等大数据类型。(AtomicInteger原创 2016-08-04 10:49:49 · 464 阅读 · 0 评论 -
Java虚拟机--字节码执行引擎
方法调用解析分派涉及到重载、重写的原理,动态绑定的原理。原创 2016-08-03 23:09:52 · 342 阅读 · 0 评论 -
Java虚拟机先锋队
博主的Java虚拟机系列索引: Java虚拟机–内存区域划分 Java虚拟机–垃圾回收与内存分配 Java虚拟机–类加载机制 Java虚拟机–字节码执行引擎 Java虚拟机–编译期优化 Java虚拟机–内存模型与线程 Java虚拟机–线程安全与锁优化 相关阅读: Java虚拟机图解专栏 简直棒到没SEI了!原创 2016-08-03 18:10:02 · 350 阅读 · 0 评论