これらは, SharedHeap 用 (及び GenCollectedHeap 用) の補助クラス (See: here, here and here for details).
より具体的に言うと, SharedHeap 内では GC アルゴリズムに応じて様々な Generation クラスが使用されるが, この GenerationSpec クラスが具体的にどの Generation を使うかを管理している.
GenCollectedHeap クラス内で使用される補助クラス.
GenCollectedHeap 内の New 領域および Old 領域について, それらを管理する Generation クラスを決定する.
また, Generation 毎に異なるいくつかの挙動をカプセル化する役割も果たしている (コメントによると, Generation オブジェクトの生成前に使うので Generation クラスの virtual method では実現できない, とのこと).
((cite: hotspot/src/share/vm/memory/generationSpec.hpp))
// The specification of a generation. This class also encapsulates
// some generation-specific behavior. This is done here rather than as a
// virtual function of Generation because these methods are needed in
// initialization of the Generations.
class GenerationSpec : public CHeapObj {
See: here for details
SharedHeap クラス内で使用される補助クラス.
SharedHeap 内の Perm 領域を管理する Generation クラスを決定する.
なお, 役割としては GenerationSpec によく似ているが PermGen が Generation クラスになっていないので GenerationSpec とは別のクラスにしている, とのこと.
((cite: hotspot/src/share/vm/memory/generationSpec.hpp))
// The specification of a permanent generation. This class is very
// similar to GenerationSpec in use. Due to PermGen's not being a
// true Generation, we cannot combine the spec classes either.
class PermanentGenerationSpec : public CHeapObj {
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.