Gaussian Splatting · 23 자원 수명과 반복 로딩
단계: 측정 가능한 GS 전시 뷰어 · 편집 가능한 예제 · 저장 ID: gaussian-splatting-step-23
목표와 학습 후 역량
- 자원 소유권을 관리한다.
- 반복 교체 후 정리 상태를 검증한다.
선수 지식
22단위 결과물과 기록을 이어 사용합니다. 자원 수명과 반복 로딩 실험에 앞서 이전 입력과 기준 출력을 보관합니다.
핵심 개념과 설명
소유권
장면 객체를 제거하는 것과 관련 자원을 해제하는 것은 별개입니다. 누가 만든 buffer·texture·listener인지 목록으로 관리합니다.
반복 사용
한 번 정상 동작한 뷰어도 교체와 종료를 반복하면 누수가 드러납니다. 렌더러별 해제 API는 해당 버전 문서로 확인합니다.
실습 준비
예제 화면의 실행 범위 안내를 먼저 확인하세요. 다음은 과제를 별도 프로젝트로 확장할 때의 준비 환경입니다. 별도 로컬 프로젝트의 문서 안내 실습입니다. 직접 만든 소형 데이터 또는 사용 허가를 확인한 로컬 파일만 사용합니다. 기존 미리보기는 1 MiB·512개 이하 .splat/ASCII GS PLY를 다루는 CPU 교육 뷰어이며 Spark GPU 렌더러가 아닙니다.
연결된 예제는 출발점입니다. 아래 과제 전체가 완성된 코드는 아니며, 예제의 지원 범위를 넘는 작업은 별도 프로젝트에서 수행하세요.
실습 과제
- lifecycle.js에 생성한 자원과 해제 함수를 등록하세요.
- 작은 fixture A/B를 열 번 교체하고 마지막에 dispose를 두 번 호출하세요.
- 활성 listener·animation loop·객체 수를 기록하고 참조를 비우세요.
관찰할 변수
| 변수 | 기준 조건 | 바꿀 조건 | 예상할 변화·검증 가설 |
|---|---|---|---|
| 교체 횟수 | 1회 | 10회 | 정상 정리 시 활성 루프와 현재 데이터 참조 수가 누적되지 않을 것으로 예상합니다. |
표의 예상은 측정 결과가 아닙니다. 한 번에 한 조건만 바꾸고 실제 결과가 다르면 원인을 기록하세요.
완료 조건
- 교체 후 활성 렌더 루프가 하나 이하이다.
- 중복 dispose가 예외 없이 끝나며 해제 목록을 남긴다.
자가 점검
- scene.remove만으로 충분하지 않은 이유는 무엇인가요?
- 라이브러리 캐시와 실제 누수를 어떻게 구분하나요?
공식 참고
연결된 예제와 실행 범위
CPU Canvas2D 합성 fixture와 계약 검사. Spark GPU·학습 데이터·재구성 품질·GPU 성능 주장을 제공하지 않습니다.
원본 코드·기록은 자동으로 덮어쓰지 않습니다. 기존 예제를 초기화할 때도 필기는 유지됩니다.
다음 학습
이전: 프로파일 구간 분리 · 다음: 키보드와 카메라 복구