Guidedog / ドキュメント
0.2.0
メモリと所有権¶
予算は計上の契約である。計上の寿命と、それが賄う記憶領域の寿命が一致して初めて意味を持つ。
課金はストレージに伴う¶
割り当て前にバイト数を予約し、解放後に計上を解除する。バッファーの置換中は新旧が共存し得るため、新しい割り当て全量を計上する。増分だけではピークを過小評価する。
\[\text{置換時のピーク} = \text{その他の使用中メモリ} + \text{旧バッファー} + \text{新バッファー}.\]
セッション所有の入力はセッションが回収する。呼び出し側所有の入力はその責任のまま。read_owned と read_kept はこの違いを明示する。短く読んでも既に確保した領域は小さくならない。
既知のゼロは不明ではない¶
メモリ調査では余裕がないと分かる場合と、余裕を調べられない場合がある。両者をゼロで表さず、既知かどうかのフラグで分ける。Linux では可視の祖先階層にある読み取り可能な cgroup 制限も適用する。ホスト全体の空きメモリだけではコンテナー内の実態を誤る。
診断は作業領域より長く残る¶
セッション後に示す報告は、見出し、ソース、修正案を所有し、解放済みのバッファーを借用してはならない。内部の位置はバイトオフセット、利用者向けの列は Unicode スカラー数、端末の印は別途表示幅を考慮する。
残る境界¶
Guidedog は自身の管理する作業領域を計測する。Typst とネイティブ依存には独自の割り当てがあり、大きな PDF はホスト予算を大幅に超え得る。リモートの CPython 検証では Typst 込みのピーク RSS は約14.5 GiB。これはその負荷の実測で、普遍的な上限ではない。予算到達時の選択は エラーメッセージ を参照。