2

100%明確にしたいだけです。

Android OS は、Mark&Sweep と Concurrent Mark&Sweep の 2 つの GC アルゴリズムを使用します。

2.3 より前は、並行アルゴリズムはなく、シリアル アルゴリズムのみでした。

Serial Mark&Sweep - 圧縮アルゴリズムであり、Young 世代でのみ機能します。

CMS は両方の世代 (Yong と Old) で動作し、圧縮は行わず、空きリストを使用するだけです。また、Android には PermGen スペースがありません。一般に、CMS は Old 世代で動作します。これは、Young がシリアル アルゴリズムによって既にクリアされているためです。

私は正しいですか?:)

4

1 に答える 1

3

Android 5.0より前は、圧縮 GCはありませんでした。Dalvik VM はMark&Sweep GC のみを実装し (これは並行して実行される可能性があるため、CMS のステートメントは Mark&Sweep GC でも正確ではありません)、Copying GC のみを実装し、さまざまな状況に応じてそれらのいずれかを使用しました。 (どのアルゴリズムをいつ使用するかについてはよくわかりません)。

Android 5.0 ART では、セミスペース(SS)GC、ジェネレーショナル セミスペース(GSS)GC、Mark&Compact GC(MC)の 3 つの圧縮 GC が導入されていますできません。圧縮 GC はバックグラウンド GCとして使用され、Mark&Sweep はフォアグラウンド GCとして使用されます。

于 2015-11-05T06:18:17.103 に答える