プロが教える店舗&オフィスのセキュリティ対策術

今日、mark-and-sweepとcopy collectionについて勉強しました。

mark-and-sweepはアクセス可能なセルにmarkを付けてゆき、その後、すべてのセルを調べmarkのついてないセルをsweepするというもの。
copy collectionはメモリセル群をworking halfとfree halfにわけ、workinghalfのセルが多くなってきたら、それをfree halfにコピーしてfree halfに整理する。そして、working halfとfree half を入れ替える。

と解釈しています(間違っていたら訂正お願いします)

今取り組んでいる問題が
「mark-and-sweepはsweep時にタイムロスを起こします。これを解決するためにcopy collectionと呼ばれる方法がとられています。copy collectionがどう動くが説明し、sweep時のタイムロスの問題を解決する以外のcopy collectionの利点を挙げよ」
です。

しかし、いまいちcopy collectionの良さが理解できてません。
mark-and-sweepより速そうなのはわかりますし、copyする際にメモリが整理されるのでメモリセルの有効活用になりそうなのもなんとなくわかるのですが。結局のところ何がよいのでしょうか?

どなたかわかる方、アドバイス、補足をいただけないでしょうか。

A 回答 (1件)

ガーベージ・コレクションの話なんて久しぶり….




> sweep時のタイムロスの問題を解決する以外のcopy collectionの利点を挙げよ

メモリ回収と同時にコンパクションができるため,
・メモリの断片化が解消される.
・リンクされているオブジェクト同士が近くに再配置される可能性が高いので,
 次回にそれらのオブジェクトにアクセスする際にキャッシュが効きやすい.

…あたりかな.


第5章 ガ-ベージコレクション
http://i.loveruby.net/ja/rhg/book/gc.html

ガベージコレクション (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99% …

フラグメンテーション (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9% …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!