JVM学习笔记
itunewu
这个作者很懒,什么都没留下…
展开
-
JVM学习(2)-HotSpot对象
本文中的对象限于HotSpot虚拟机中对象创建 虚拟机遇到new指令,先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析和初始化 如果没有,先执行相应的的类加载过程,在类加载检查通过后,虚拟机为新生对象分配内存 内存分配完成后,虚拟机需要将分配到的内存空间都初始化为零值,保证对象的实例字段在Java代码中不赋初始值就能直接引用 虚拟机对对象进行原创 2017-04-09 11:25:53 · 251 阅读 · 0 评论 -
JVM学习(3)-判断对象存活
Java虚拟机中GC回收主要针对的是堆中的对象,对象在回收前应该判断是否需要回收。判断方法主要是两种:引用计数算法和可达性分析算法。java虚拟机采用的是可达性分析算法。引用计数算法 算法原理:给对象添加一个引用计数器,每有一个地方引用它时,计数器值就加1。当引用失效时,计数器值就减1,任何时候计数器值为0的对象就是不在被使用的对象。 优缺点:实现简单、判定效率很高但是不能解决对象之间相互循环引用的原创 2017-04-11 10:32:45 · 261 阅读 · 0 评论 -
JVM学习(4)-垃圾回收算法
java语言的一大特点就是可以进行自动垃圾回收处理,垃圾收集器可以有多种不同的实现,本文主要介绍一下回收算法。1.引用计数法:对于一个对象,判断是否有引用,如果有计数器+1。引用失效则计数器-1。缺点在于存在两个或多个该回收的对象互相引用的情况,此时按照引用计数法无法处理。2.标志-清除算法:该方法将垃圾回收分为两个阶段,标记阶段和清除状态。在标记阶段,首先通过根节点,标记所有从根节点开始的可达状态原创 2017-04-02 22:06:56 · 304 阅读 · 0 评论 -
JVM学习(1)-组成
java虚拟机主要分为程序计数器、虚拟机栈、本地方法栈、java堆、方法区。程序计数器(PC):因线程之间需要根据时间片轮询抢夺CPU资源,所以一个线程需要一个程序计数器用于记录下一条要运行的指令。虚拟机栈:和java线程在同一时间创建,保存方法的局部变量、部分结果、参与方法调用及返回。运行时使用栈帧保存上下文数据,包括局部变量表、操作数栈、动态链接、返回地址。栈帧中性能调优主要关注局部变量表。本地原创 2017-04-02 21:01:41 · 201 阅读 · 0 评论