jvm
文章平均质量分 83
Etyero
骨灰级菜鸟
展开
-
【证】:那些可作为GC Roots的对象
一、名词解释根搜索算法是JVM用来的判断对象是否存活的算法,此算法基本思路为通过一系列的“GC Roots”对象作为起始点,从这些节点往下搜索,当一个对象和GC Roots不可达时,则该对象是无用的,可被回收的。如下图所示:object5、object6、object7虽然互相有关联,但是他们到GC Roots是不可达的,因此他们都可以被回收。 在java中,可作为GC R原创 2017-06-01 21:06:26 · 23799 阅读 · 6 评论 -
【证】:内存的分配与回收策略
一、名词解释JVM的内存分配及回收策略:1.对象优先分配到Eden区中;2.大对象直接进入到老年代;3.长期存活的对象将进入老年代;4.动态对象年龄判断;5.空间分配担保机制JVM的垃圾回收算法采用的分代回收算法,根据对象存活周期不同,将内存分为年轻代和老年代,这样可以因地制宜的选择相应的回收策略。年轻代采用的回收算法是复制算法,了解过该算法的童鞋肯定知道,该算法是把内原创 2017-06-02 17:11:39 · 819 阅读 · 1 评论 -
简介JVM的Serial及ParNew收集器
Serial:串行收集器,JVM client模式下的默认收集器,使用复制算法,在进行垃圾回收时会暂停其他所有的工作线程(stop the world,简称STW)直至回收结束,因此会影响用户的正常使用体验,但是因为少了多线程切换的开销,相较于其他收集器能够更加专注于垃圾回收,在单核场景下效率极高,并且在回收较小内存(几十或者一两百兆)时,停顿时间是毫秒级的。推荐使用场景:年轻代占用几十兆到一原创 2017-06-05 10:38:39 · 4111 阅读 · 0 评论 -
简介JVM的Parallel Scavenge及Parallel Old垃圾收集器
Parallel Scavenge:是与ParNew类似,都是用于年轻代回收的使用复制算法的并行收集器,与ParNew不同的是,Parallel Scavenge的目标是达到一个可控的吞吐量,吞吐量=程序运行时间/(程序运行时间+GC时间),如程序运行了99s,GC耗时1s,吞吐量=99/(99+1)=99%。Parallel Scavenge提供了两个参数用以精确控制吞吐量,分别是用以控制最原创 2017-06-05 15:21:50 · 15909 阅读 · 2 评论 -
简介JVM的CMS垃圾收集器
CMS(Concurrent Mark Sweep):是一款基于“标记-清除”算法,以获取最短GC停顿时间为目标的垃圾收集器,B/S系统尤其青睐该收集器,以带给用户最优的体验。大部分文档及书籍描述该收集器的收集过程为4个,其实看GC日志我们能知道,CMS的收集过程是分为7个步骤的:初始标记(CMS-initial-mark --STW):标记老年代中所有的 GC Roots能直接关联到原创 2017-06-05 17:29:03 · 1998 阅读 · 0 评论