# メモリ返却実験の添付データ

CPython 3.11.2 / Linux 6.12 / aarch64 / glibc 2.36 / 4 KiBページ / 標準pymalloc。2026-10-30測定。

`phases.csv`は各処理段階の値。`main`はtracemallocなしの本測定で、各条件3個の新規プロセス（rep）、各2周期（cycle）。`traced`は別プロセスでのtracemalloc診断で、各条件1回・1周期。両者のRSSを混ぜて集計しない。

caseはlarge（32 MiBのbytearray）、small（bytearray(256) 80,000個）、sparse（同じデータの1/64を保持）、cycles（自己参照Node＋bytearray(256) 80,000個）。オブジェクトやリストの管理領域は別に必要。

phaseのbaselineは各周期のGC・trim後の生成前、allocatedは生成直後、droppedは外側参照の破棄直後、idle_3sは約3秒後、forced_gcは手動フルGC後、anchors_releasedは保持リストの解放と追加GC後、trimmedはmalloc_trim(0)後。

rss_mibはその時点のRSS、rss_delta_mibはその周期のbaselineからの差。pss_mibはPSS、anonymous_mibはAnonymous。いずれもsmaps_rollup由来。MiBは1,048,576バイト。elapsed_sはプロセス内の観測開始からの秒数。gc_wall_msとgc_cpu_msは手動GCの実時間とプロセスCPU時間で、それ以外のphaseでは0。collectedの空欄は、その段階のGC回収数をこの列に記録していないことを表す。baseline前とanchors_released前にもGCは実行している。

sample_aliveは循環Nodeの標本weakref 32個の生存数。全Nodeの生存総数ではない。gc_eventsは計測用callback登録後に完了したGCの観測数で、観測準備のGCも含む。traced_delta_mibはtracemalloc追跡量の周期前からの差、tracemalloc_bookkeeping_mibは追跡管理用領域。mainでは追跡を行っていないため両列は0。全ネイティブ割り当ての量ではない。

`timeline.csv`はmainの約200 ms間隔の観測。elapsed_sは各プロセスの最初のbaselineからの秒数なので、phases.csvとは原点が異なる。Rss/Pss/Anonymousとcgroupのmemory.currentを別々の列に保存している。cgroupへの課金量はRSSと一致する指標ではない。

CPU上限0.25コア、メモリ上限128 MiB、swap上限0。各周期前のGC・trim、循環条件で参照保持中のGCがあるため、自然放置時の長期挙動や通常アプリの停止時間へ一般化しない。グラフの縦棒は3プロセス×2周期の6観測の最小〜最大で、信頼区間ではない。

原始ログ・接続先・ホスト名・PID・ユーザーサービス名・内部パスは、この添付データには含めない。
