Hotspot 源码解析
文章平均质量分 90
读程序的手艺人
专研于大数据处理
展开
-
java对象的内存分配入口
一.GC策略检查 JVM在原创 2014-11-01 19:34:33 · 4531 阅读 · 3 评论 -
内存代管理器TenuredGeneration对垃圾对象的回收
内存代管理器TenuredGeneration作为基于内存分代管理的内存堆管理器GenCollectedHeap默认的旧生代管理器,它对垃圾对象的回收算法要比年青代Gc要复杂的多,但其主体思路就是:标记-清除-压缩.本文主要围绕内存代Gc时的三个过程来详细讲解TenuredGeneration是如何进行垃圾回收的.一.Gc条件 可对 TenuredGeneration管理的旧生代进原创 2015-01-18 15:57:18 · 3525 阅读 · 0 评论 -
内存代管理器DefNewGeneration对垃圾对象的回收(Minor Gc)
内存堆管理器GenCollectedHeap在执行Gc回收垃圾对象的时候,无论是它自己还是垃圾回收策略MarkSweepPolicy都没有具体去规定一个垃圾对象应该如何被回收,而只是在整体上决策这次的Gc应该回收那些内存代中的垃圾对象,至于这些内存代管理器是如何做的,GenCollectedHeap并不关心. 从前文分析内存堆管理器GenCollectedHeap执行Gc策略调度内存代管理器去回收原创 2014-12-14 20:39:02 · 2953 阅读 · 0 评论 -
内存堆Gc时公认的根对象
内存堆的Gc就是回收内存堆中垃圾对象(非active对象),那么这里就有一个问题了,如何寻找垃圾对象?换个思路来解,就是如何找到所有的active的对象,那么剩下的就是垃圾对象了.HotSpot是通过首先找到所谓的根对象,然后根据这些根对象递归或迭代的搜索所有的引用对象,而找到的这些个对象就是所谓的active对象了.其实,Gc时的根对象是一个与运行时上下文相关的概念,以基于内存分代管理的内存代管原创 2015-01-10 18:25:14 · 8157 阅读 · 2 评论 -
内存代管理器TenuredGeneration的对象内存分配
内存代管理器TenuredGeneration是基于内存分代管理的内存堆管理器GenCollectedHeap默认的旧生代管理器,对于java对象的内存分配处理还是比较简单的,但在垃圾对象回收方面.它的实现可能要远比新生代管理器要复杂的多.前文在介绍GenCollectedHeap是如何响应对象内存申请时就涉及到了旧生代内存管理器的几个核心的抽象接口,所以本文将主要介绍TenuredGenerat原创 2014-11-30 17:18:28 · 4668 阅读 · 0 评论 -
内存代管理器DefNewGeneration的对象内存分配
内存代管理器DefNewGeneration是所有基于内存分代管理的内存堆管理器的默认年青代管理器,同时它也只能用于年青代的内存管理而不能用于旧生代的内存管理.它的基本思路就是将整个内存代分配为三个区: Eden区, From区, To区; 一般情况下,只在Eden区和From区分配对象创建时所需的内存,To区只在内存代进行垃圾对象回收用于存放转存储过来的非垃圾对象(active对象):原创 2014-11-23 16:38:10 · 2962 阅读 · 0 评论 -
内存堆管理器GenCollectedHeap分配对象内存及Gc触发
前面在原创 2014-11-22 15:07:03 · 3129 阅读 · 0 评论 -
内存堆管理器GenCollectedHeap的初始化
前文在介绍Java对象内存分配的上层接口CollectedHeap时就提过, GenCollectedHeap是一种基于内存分代管理的内存堆管理器实现. 它一方面负责java对象的内存分配, 另一方面还得负责垃圾对象的回收, 而GC策略CollectorPolicy则是它的核心组件.这里,内存堆管理器GenCollectedHeap配置的GC策略实现是GenCollectorPolicy的子类,原创 2014-11-16 17:17:31 · 3873 阅读 · 0 评论 -
MarkSweepPolicy的初始化: 内存代大小的计算
基于标记-清除原创 2014-11-09 14:37:09 · 3779 阅读 · 0 评论 -
GenCollectedHeap的Gc策略MarkSweepPolicy
当内存堆管理器响应应用线程的一次内存分配请求失败时(就是没有足够的空闲内存),就会触发一次Gc来回收部分或所有的垃圾对象好腾出足够的空间来满足应用的所需内存,如果还不够则抛出OOM. MarkSweepPolicy的大体思路就是标记active的对象, 清理未被标记(非active)的对象MarkSweepPolicy作为内存堆管理器GenCollectedHeap的默认配置Gc策略, 针对这种内原创 2014-12-13 15:48:58 · 2692 阅读 · 0 评论