本系列文章由作?a title="hunter129" >@hunter129 译Q{载请注明出处?/div>
今天是第三章的剩余部分:(x)4.性能度量指标Q?.分代攉的基本原理?br />
性能度量 一些指标用来评估垃圾收集的性能Q包括:(x)
吞吐量(ThroughputQ?br /> 一个很长的周期中,除去p在垃圾收集上的时间占L间的癑ֈ比?br /> 垃圾攉开销QGarbage collection overheadQ?br /> 与吞吐量相反Q这是垃圾收集占L间的癑ֈ比?br /> Q译注:(x)Z么需要两个指标呢Q对于ƈ发的垃圾攉法Q垃圾收集的部分d?span >应用
pȝ同时q行D上述两个指标加v来会(x)大于100%Q?br /> 暂停旉QPause timeQ?br /> 垃圾攉发生Ӟ应用pȝ暂停的时间?br /> 攉频率QF(tun)requency of collectionQ?br /> 垃圾攉相对于应用系l运行发生的频率?br /> 占用I间QF(tun)ootprintQ?br /> 一U大的指标Q例如堆大小?br /> 反应旉QPromptnessQ?br /> 对象变成垃圾之后?span >内存可用的时?br />
一个交互式应用需要较低的暂停旉Q反之持l的执行旉对于非交互式应用更加重要。一个实时应用程序要求在垃圾攉中的暂停以及(qing)攉
器的整个周期拥有较少的抖动。运行在个h计算机或嵌入式设备中的应用可能主要关?j)小的空间占用?br />
分代攉 使用分代Qgenerational collectionQ收集技术时Q内存分为很多代QgenerationsQ,分离的存储池存储不同q龄的对象。例如,最通用的配|?br /> 中有两代Q一个用于存攑ֹȝ对象Q另一存放q老的对象?br />
不同的代使用不同的算法执行垃圾收集Q务,每个法?x)基于本代独特的特征q行
优化。分代的垃圾攉Z一U被UCؓ(f)弱分代假设(weak
generational hypothesisQ,它是关于在几U语aQ包?span >java语言Q编写的应用E序中观察到的结果:(x)
大部分的分配的对象不?x)被引用Q存?gu)z)(j)很长旉Q这些对象在q轻的时候就L?br /> q老对象引用年d象的情况很少出现
q轻代的攉发生的相寚wJ、有效、快速,因ؓ(f)q轻代的I间通常比较?yu)ƈ且有很多的对象都不再被引用?br />
在年M几次攉后仍然生存的对象最l会(x)晋升QpromotedQ或者被授予QtenuredQ到q老代。如?。年老代一般比q轻代大Qƈ且增长的速度
很慢。结果是Q年老代的收集很发生,但是?x)花?gu)长的旉才能完成?br />
? 分代的垃圾收?br />
为年M
设计的收集算法主要关注在速度斚wQ因为垃圾收集经常发生。另一斚wQ在I间斚w更有效率的算法管理着q老代Q因为年老代占据?br /> 大部分的堆空间ƈ且年老代的垃圑֯度比较低?br />
此文已{UdQ?a >http://www.xiegq.com/2013/09/16/39.html