메모리와 소유권¶
예산은 회계 계약이다. 계상된 비용의 수명이 그 비용이 담당하는 저장 공간의 수명과 같아야 의미가 있다.
사용량은 저장 공간을 따라간다¶
할당 전에 바이트를 예약하고 해제 뒤에 비용을 반환한다. 버퍼 교체 중에는 새 버퍼와 기존 버퍼가 공존할 수 있으므로 새 할당 전체를 계상한다. 증가분만 계산하면 최대 사용량을 과소평가한다.
세션 소유 입력은 세션이 회수한다. 호출자 소유 입력은 계속 호출자가 책임진다. read_owned와 read_kept가 이를 명시한다. 더 짧게 읽어도 이미 할당한 공간은 줄지 않는다.
알려진 0은 미상과 다르다¶
메모리 탐색은 여유가 없음을 확인하거나 여유를 알아내지 못할 수 있다. 둘은 다른 상태다. 정책은 모두 0으로 나타내지 않고 별도의 확인 여부 플래그를 둔다. Linux에서는 보이는 상위 계층의 읽을 수 있는 cgroup 제한도 적용한다. 호스트 전체의 가용량만으로 컨테이너 메모리를 판단하면 잘못될 수 있다.
진단은 작업 공간보다 오래 남는다¶
세션 뒤에 표시하는 보고서는 제목, 소스, 수정 문구를 소유해야 하며 해제된 버퍼를 빌려서는 안 된다. 내부 소스 범위는 바이트 오프셋, 사용자 열은 Unicode 스칼라 수를 쓴다. 터미널 표시는 화면 너비를 별도로 고려한다.
남아 있는 경계¶
Guidedog은 관리하는 작업 공간을 측정한다. Typst와 네이티브 의존성은 자체 할당을 관리하므로 큰 PDF 책은 호스트 예산보다 훨씬 많은 메모리를 쓸 수 있다. 원격 CPython 검증의 Typst 포함 최대 RSS는 약 14.5 GiB였다. 이는 해당 작업의 측정값이며 보편적 상한은 아니다. 예산에 도달했을 때의 선택은 오류 메시지에 있다.