GC 中の Generation からのメモリ確保処理は, Generation::par_allocate() または Generation::allocate() によって行われる (See: here for details).
UseSerialGC の場合, DefNewGeneration 及び TenuredGeneration の対応するメソッドが呼び出される. どちらの場合も, 実際の確保処理は ContiguousSpace::par_allocate_impl() または ContiguousSpace::allocate_impl() で行われている.
DefNewGeneration::par_allocate() -> EdenSpace::par_allocate() -> ContiguousSpace::par_allocate_impl()
DefNewGeneration::allocate() -> (1) Eden 領域中からの確保を試みる. 成功すれば結果をリターン -> EdenSpace::par_allocate() -> (同上) (1) Eden 領域の soft limit を増加させて確保を試みる. 成功すれば結果をリターン (1) From 領域中からの確保を試みる -> DefNewGeneration::allocate_from_space() -> ContiguousSpace::allocate() -> ContiguousSpace::allocate_impl()
OneContigSpaceCardGeneration::allocate() -> ContiguousSpace::allocate() -> (同上)
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.