Top

PSVirtualSpace クラス関連のクラス (PSVirtualSpace, PSVirtualSpaceVerifier, PSVirtualSpaceHighToLow)

クラス一覧(class list)


PSVirtualSpace

概要(Summary)

ParallelScavenge 用の VirtualSpace クラス (See: VirtualSpace).

なお, VirtualSpace クラスと異なり, このクラスは _ValueObj クラスではなく CHeapObj クラスになっている (というわけでこのクラスは VirtualSpace クラスのサブクラスでもない).

(わざわざ VirtualSpace クラスとは別に PSVirtualSpace クラスを作った理由は, 継承によって PSVirtualSpace オブジェクトと PSVirtualSpaceHighToLow オブジェクトを統一的に扱いたかったからだと思われる. PSVirtualSpace オブジェクトと(そのサブクラスである) PSVirtualSpaceHighToLow オブジェクトは, どちらも PSVirtualSpace* 型のフィールドに入る. VirtualSpace クラスやそのサブクラスでは _ValueObj クラスになってしまうので(= ポインタ経由で扱えないので)こうしたテクニックが使えない.)

    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp))
    // VirtualSpace for the parallel scavenge collector.
    //
    // VirtualSpace is data structure for committing a previously reserved address
    // range in smaller chunks.

    class PSVirtualSpace : public CHeapObj {

詳細(Details)

See: here for details


PSVirtualSpaceHighToLow

概要(Summary)

特殊な PSVirtualSpace クラス. (通常の PSVirtualSpace とは逆に) expand_by() 時にアドレス空間上の下方に向かって伸びる.

(なぜ下方に伸びないといけないかは AdjoiningVirtualSpaces を参照)

    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp))
    // A virtual space that grows from high addresses to low addresses.
    class PSVirtualSpaceHighToLow : public PSVirtualSpace {

使われ方(Usage)

ASPSYoungGen 内で使用されている.

詳細(Details)

See: here for details


PSVirtualSpaceVerifier

概要(Summary)

デバッグ用(開発時用)のクラス (#ifndef PRODUCT 時にしか定義されない).

    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp))
    #ifndef PRODUCT
    ...
      // Helper class to verify a space when entering/leaving a block.
      class PSVirtualSpaceVerifier: public StackObj {

コンストラクタ引数で指定された PSVirtualSpace オブジェクトの検証を行う (コンストラクタとデストラクタで PSVirtualSpace::verify() を呼び出している).

    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.hpp))
        PSVirtualSpaceVerifier(PSVirtualSpace* space): _space(space) {
          _space->verify();
        }
        ~PSVirtualSpaceVerifier() { _space->verify(); }

使われ方(Usage)

PSVirtualSpace クラス (や PSVirtualSpaceHighToLow クラス) の以下のメソッド内で使用されている.

(ただし, DEBUG_ONLY で囲われているので, 使われるのはデバッグ時のみ).

    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp))
    void PSVirtualSpace::release() {
      DEBUG_ONLY(PSVirtualSpaceVerifier this_verifier(this));
    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp))
    bool PSVirtualSpace::expand_by(size_t bytes) {
    ...
      DEBUG_ONLY(PSVirtualSpaceVerifier this_verifier(this));
    ((cite: hotspot/src/share/vm/gc_implementation/parallelScavenge/psVirtualspace.cpp))
    bool PSVirtualSpace::shrink_by(size_t bytes) {
    ...
      DEBUG_ONLY(PSVirtualSpaceVerifier this_verifier(this));

詳細(Details)

See: here for details



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