![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入理解Java虚拟机
文章平均质量分 75
Y-A-N-G
这个作者很懒,什么都没留下…
展开
-
DepthJVM-垃圾收集器与内存分配策略
1、对象是否“存活”引用计数器:每个对持有一个计数器,被引用时加1,引用失效时减1,难以解决循环引用问题可达性分析:当对象到GC Roots没有引用链时表示该对象不可用GC Roots:枚举根节点,必须Stop The World;可以作为根节点的节点:1.虚拟机栈(本地变量表)中引用的对象 2本地方法栈中JNI引用的对象 3.方法区中类静态属性引用的对象 4.方法区中常量引用的对象原创 2017-03-29 17:00:26 · 321 阅读 · 0 评论 -
DepthJVM-虚拟机类加载机制
1、类加载时机仅加载直接引用的类(如:子类使用父类的静态字段,只初始化父类);有且仅有以下情况:1.new/getstatic/putstatic/invokestatic指令(Java场景:new对象、读取或设置静态字段、调用静态方法)2.java.lang.reflect包方法对类进行反射调用3.初始化一个类时,如果发现其父类还未初始化则先初始化父类4.原创 2017-03-29 17:01:49 · 185 阅读 · 0 评论 -
DepthJVM-Java内存模型与线程
1、内存交互主内存:线程共享的JVM部分内存工作内存:线程独有,线程对变量的所有操作均在工作内存中进行,线程间变量值传递需要通过主内存来完成交互操作:1.lock(锁定,作用于主内存变量,把一个变量标识为一个线程独占状态) 2.unlcok(解锁,作用于主内存变量,释放处于锁定状态的变量) 3.read(读取,作用于主内存变量,把一个变量值从主内存传输到线程的工原创 2017-03-29 17:02:30 · 328 阅读 · 0 评论 -
DepthJVM-线程安全与锁优化
线程安全与锁优化1、线程安全2、线程安全的实现3、自旋锁和自适应自旋4、锁消除5、锁粗化6、轻量级锁7、偏向锁原创 2017-03-29 17:02:55 · 480 阅读 · 0 评论 -
DepthJVM-编译期优化
1.Java编译器编译过程1.1 解析与填充符号表词法、语法分析:填充符号表:1.2 插入式注解处理器的注解处理过程用于处理注解,类似于一组编译器插件,可以读取、修改、添加语法树中的任意元素,如果对语法树进行了修改编译器将回到解析及填充符号表过程重新处理,直至没有修改位置,每一个循环称为一个Round(回环)插入式注解处理器初始化过程在initProcess原创 2017-04-20 21:33:31 · 344 阅读 · 0 评论 -
DepthJVM-运行期优化
1.解释器和编译器当程序需要迅速启动和执行时,解释器首先发挥作用,省去编译时间,立即执行,在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码后,获取更高的运行效率。当程序运行环境中内存资源限制较大时,可以使用解释执行节约内存,反之可以使用编译执行提高效率。解释器还可以作为编译器激进优化时的一个“逃生门”,让编译器根据概率选择一些大多数时候能提升运行速度的优化手原创 2017-04-20 21:34:19 · 275 阅读 · 0 评论 -
DepthJVM-类文件结构
1.无关性平台无关性、语言无关性各种平台虚拟机与所有平台统一使用的程序存储格式--字节码是构成平台无关性的基石。Java虚拟机不与任何语言绑定,只与"Class文件"这种特定的二进制文件相关联,任何语言都可以表示为一个能被Java虚拟机所接受的有效Class文件,虚拟机不关心Class文件的来源是何种语言2.Class类文件结构Class文件是一组以8位字节为基础单位的原创 2017-04-20 21:35:15 · 231 阅读 · 0 评论 -
DepthJVM-大纲
原创 2017-04-20 22:21:12 · 213 阅读 · 0 评论