Top

PSPromotionManager クラス


PSPromotionManager

概要(Summary)

ParallelScavengeHeap の Minor GC 処理 ("Parallel Scavenge" 処理) で使用される補助クラス (See: here, here and here for details).

オブジェクトのコピー処理やポインタの再配置処理, 及びそれらを並列化するための機能を提供している.

    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp))
    class PSPromotionManager : public CHeapObj {

なお, 各 PSPromotionManager オブジェクトはそれぞれ1つのスレッドからしか使用されない (そして, PSPromotionManager オブジェクト内にはスレッドローカルなデータしか含まない).

(誰かデストラクタを書いてくれ, みたいなことが書いてあったりもするが...)

    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp))
    // psPromotionManager is used by a single thread to manage object survival
    // during a scavenge. The promotion manager contains thread local data only.
    //
    // NOTE! Be carefull when allocating the stacks on cheap. If you are going
    // to use a promotion manager in more than one thread, the stacks MUST be
    // on cheap. This can lead to memory leaks, though, as they are not auto
    // deallocated.
    //
    // FIX ME FIX ME Add a destructor, and don't rely on the user to drain/flush/deallocate!

使われ方(Usage)

インスタンスの格納場所(where its instances are stored)

PSPromotionManager オブジェクトの _manager_array フィールドに(のみ)格納されている. (正確には, このフィールドは PSPromotionManager の配列を格納するフィールド. この中に, 全 GCTaskThread 用の PSPromotionManager オブジェクトが格納されている)

    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp))
    class PSPromotionManager : public CHeapObj {
    ...
      static PSPromotionManager**         _manager_array;

生成箇所(where its instances are created)

PSPromotionManager::initialize() 内で(のみ)生成されている.

参考(for your information): PSPromotionManager::initialize()

See: here for details

詳細(Details)

See: here for details



This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.