Guidedog / 文档
0.2.0
内存与所有权¶
预算是一份记账契约。只有计费生命周期与其所支付的存储生命周期一致,预算才有意义。
计费跟随存储¶
分配前先预留字节;释放存储后再解除计费。替换缓冲区时,新旧缓冲区可能同时存在,重叠期间应计入完整新分配。只计增量会低估峰值。
\[\text{替换时的峰值} = \text{其他存活存储} + \text{旧缓冲区} + \text{新缓冲区}.\]
会话拥有的输入由会话回收;调用方拥有的输入仍由调用方负责。read_owned 和 read_kept 明确区分这两种情况。读取长度减少,并不会缩小已分配空间。
已知为零,不等于未知¶
内存探测可能确认没有余量,也可能无法查明余量,这是不同状态。策略用单独的已知标记区分,而非都用零表示。Linux 上,可读取的 cgroup 限制沿可见祖先层级生效。仅看容器宿主机的空闲内存可能误导。
报告的寿命长于工作区¶
会话结束后显示的报告必须拥有标题、源文和修正文字,不能借用已释放缓冲区。内部源范围使用字节偏移;用户列号按 Unicode 标量计数;终端标记另行考虑显示宽度。
仍然存在的边界¶
Guidedog 计量自己管理的工作存储。Typst 编译器和原生依赖自行管理分配。大型 PDF 的内存可能远超宿主预算。远程 CPython 验证中,包含 Typst 的峰值 RSS 约为 14.5 GiB。这是该工作负载的证据,不是通用上限。达到托管预算时的选择见 错误信息。