虚拟机
ssjiyi
这个作者很懒,什么都没留下…
展开
-
java虚拟机内存分布
概括 java虚拟机在运行的时候,会把内存划分成若干个内存块、这些区域各自有各自的作用用途 。 1.程序计数器 程序计数器是一块比较小的内存区域,它可以看做是当前线程所执行的字节码的行号指示器。字节码指示器工作的时候就是通过这个指令来获取下一条需要执行的指令。(分支,循环,判断、异常等都需要这个计数器来完成) 2.原创 2016-06-01 11:11:09 · 1213 阅读 · 0 评论 -
虚拟机对象是否还有引用
问题 如何判断对象已经死亡? 引用计数算法 当有一个地方引用该对象,就为对象的引用计数器加1,当引用失效的时候就减1。当计数器为0的时候代表当前对象无引用。 虽然引用计数算法的效率很好,但是java主流的虚拟机并没有选择它来管理内存。其中最主要的就是它难以解决相互引用带来的问题。 添加启动参数: -verbose:gc -XX:+PrintGCTimeStamps -X原创 2016-06-07 11:51:14 · 1092 阅读 · 0 评论 -
虚拟机垃圾收集算法
1.标记-清除算法 最基础的收集算法是 “标记-清除”。如同名字一样。算法分为标记和清除2个阶段。首先标记出所有需要回收的对象。标记完成后统一回收所有被标记的对象。 但是此种算法有2个不足之处: 1) 效率问题。2个过程效率都不高 2)空间碎片问题。标记清除之后会产生大量的空间碎片。这样后期的程序中。可能无法为大对象分配连续的空间,而导致另一次GC操作原创 2016-06-07 14:37:07 · 1331 阅读 · 0 评论 -
java对象头
在hotspot虚拟机中,对象在内存的分布分为3个部分,对象头,实例数据,和对齐填充。本文主要讲解对象头。 hotspot虚拟机的对象头主要分为2个部分。 第一部分 主要存储对象自身的运行数据。比如:哈希码、GC分代年龄、锁状态标志、线程持久的锁、偏向线程的ID、偏向时间戳等。 这部分数据的长度在32位和64为虚拟机上分别对象32bit和64bit。官方称之为“m原创 2016-06-07 10:52:57 · 4847 阅读 · 0 评论