jvm
dabokele
这个作者很懒,什么都没留下…
展开
-
五、GC调优基本概念
一、核心概念 首先,我们来观察一条工厂的生产线,该生产线主要用于将自行车各个组件拼装成一辆完整的自行车。通过观察我们发现一辆自行车从车架上生产线开始装配,直到拼装成完整自行车后下线的整个耗时为4小时,如下图所示。 并且,我们还观察到这条生产线上每分钟就会有一辆组装好的自行车下线,该生产线每天24小时不间断运行。如果忽略掉例如生产线维护等时间成本,可以算出,该生产线在一翻译 2017-03-03 00:37:03 · 5585 阅读 · 0 评论 -
二、Java中的垃圾回收
在垃圾回收中,标记清除(Mark and Sweep)是最重要的一个思想。但是想要在实际场景中应用这一思想,还是需要进行一些调整的。本文接下来就通过简单的示例来分析JVM是如何保证安全持续的分配对象的。一、碎片内存区域整理 JVM进行垃圾回收的目的是想要重复使用内存中那些不再被使用的对象所占的存储空间。这些不可用对象在内存中一般都不会是连续分布的,所以它们使用的空间也是比较零散的,而这种零散将会导翻译 2017-03-04 17:35:25 · 1017 阅读 · 0 评论 -
三、GC算法概念
在开始本章具体分析垃圾回收算法的实现之前,需要理解的是所有垃圾收集器(collector)都会关注的两个方面,找到所有存活的对象清除掉不可用对象 在所有收集器中,都是通过标记(Marking)的方法找到存活对象的。一、标记可访问对象 现在JVM中所有的GC算法都是从找出存活对象开始的。下图形象的展示了JVM中各对象之间的引用关系, 首先,GC定义了一些GC Roots对象翻译 2017-03-04 19:01:45 · 1195 阅读 · 0 评论 -
四、GC算法实现
在了解了上一章中GC算法的基本概念之后,本章将深入到各GC算法的具体实现中。对大多数JVM来说,一般需要选择两种GC算法,一种用于回收新生代内存区,另一种用于回收老年代内存区域。 新生代和老年代GC算法的可能组合如下表所示,如果不指定的话,将会在新生代和老年代中选择默认的GC算法。下表中的GC算法组合是基于Java 8的,在其他Java版本中可能会有所不同。 新生代GC算法 老年代GC算法翻译 2017-03-06 21:53:45 · 2726 阅读 · 0 评论 -
六、GC调优工具
在进行JVM GC性能调优之前,需要使用某些工具获取到当前应用的状态信息。 可以利用JVM运行时的一些原始数据来观察当时的GC性能。并且基于这些原始数据也衍生出一些经过分析统计后得到的指标。在原始数据中包含以下内容:当前内存池的使用情况当前内存池的容量每次GC暂停的耗时GC暂停的各阶段的耗时 基于这些内容分析统计得到的一些指标包括应用内存分配率,提升率等等。本章中主要讨论GC的原始数据,翻译 2017-03-11 22:12:43 · 7800 阅读 · 0 评论