JVM
JLucky123
这个作者很懒,什么都没留下…
展开
-
垃圾回收算法——引用计数
在引用计数算法中,对象的存活性可以通过引用关系的创建或删除直接判定,从而无须像追踪式回收器那样先通过堆遍历找出所有的存活对象,然后再反向确定出未遍历到的垃圾对象。引用计数算法所依赖的是一个十分简单的不变式:当且仅当指向某个对象的引用数量大于零时,该对象才有可能是存活的。在引用计数算法中,每个对象都需要与一个引用计数相关联,这一技术通常保存在对象头部的某个槽中。下述为一个简单的引用计数算法伪...原创 2020-02-07 10:42:06 · 637 阅读 · 0 评论 -
垃圾回收算法——复制式回收
标记-清扫回收地开销较低,但其可能受到内存碎片问题地困扰。在一个设计良好地系统中,垃圾回收通常只会占用整体执行时间地一小部分,赋值器地执行开销将决定整个程序的性能,因此应当设法降低赋值器的开销,特别是应当尽量提升它的分配速度。标记-整理回收器可以根除碎片问题,而且支持极为快速的“阶跃指针”分配,但它需要多次堆遍历过程,进而显著增加了回收时间。半区复制算法:该算法属于追踪式回收算法。回收...原创 2020-02-06 12:21:53 · 499 阅读 · 0 评论 -
垃圾回收算法——标记—整理回收
内存碎片化是非移动式回收器无法解决的问题之一,即:堆中仍有可用空间,但是内存管理器却无法找到一块连续内存块来满足较大对象的分配需求,或者需要花费较长时间才能找到合适的空闲内存。堆整理的最大优势在于,它允许极为快速的顺序分配,即简单的进行堆上限判断,然后根据所需空间的大小阶跃式移动空闲指针。标记——整理算法的执行需要经过数个阶段:首先是标记阶段;然后是整理阶段,即移动存活对象,同时更新存活对象中...原创 2020-02-04 15:58:01 · 1060 阅读 · 0 评论 -
垃圾回收算法——标记—清扫回收算法
理想的垃圾回收的目的是回收程序不再使用的对象所占用的空间,任何自动内存管理系统都面临三个任务:为对象分配空间;确定存活对象;回收死亡对象所占用的空间;这些任务并非相互独立,特别是回收空间的方法影响着分配新空间的方法。真正的存活性问题是一个不可确定的问题,因此我们使用指针可达性爱近似对象的存活性:只有当堆中存在一条从根出发的指针链最终到达某个对象时,才能认定该对象存货,更进一...原创 2020-01-20 07:27:06 · 957 阅读 · 0 评论