Zero fill
Copy on Write 에서 자식 프로세스를 생성하면 부모 프로세스가 가지고 있던 Page table을 그대로 물려받음
이 때, 주소만 공유 / 복사 X
자식 프로세스에 Write 작업을 요청하면, page를 메모리에 복사해 새로 올림
자식 프로세스의 page를 보고 부모 프로세스가 어디에 접근했는지와 같은 정보를 읽을 수 있기 때문에 새로 올리는 page를 0으로 초기화 해주는 것을 zero-fill-on-demend-page 라고함
vmmap --summary {App Name}.memgraph
를 사용하면 요약된 정보를 얻을 수 있음vmmap {App Name}.memgraph
를 사용하면 모든 정보를 얻을 수 있음leaks {App Name}.memgraph
를 통해 런타임에 root 가 없는 오브젝트 추적 가능heap {App Name}.memgraph
: 각 오브젝트의 클래스 이름, 오브젝트 수, 해당 오브젝트 클래스의 평균 크기 및 전체 크기에 대한 정보heap --sortBySizw {App Name}.memgraph
: 힙은 기본적으로 개수별로 정렬되지만, 해당 명령어를 사용하면 크기대로 볼 수 있음heap {App Name}.memgraph -addresses all | <classes-pattern>
: 해당 오브젝트의 주소를 알 수 있음leaks --traceTree 0x600003910ea0 {App Name}.memgraph
로 object 를 조회할 수 있음malloc_history {App Name}.memgraph --fullStacks 0x600003910ea0
를 통해 객체 생성을 역추적 할 수 있음The target process has no stack logs. Run it with the MallocStackLogging environment variable set to get stack logs.
라는 메세지가 확인 됨com.hrmi.Moment
가 내가 App 에서 호출한 코드malloc_history
: 메모리의 오브젝트 또는 주소를 참조하는 것이 어떤 것인지 확인하고 싶다거나, 주소에 대한 역추적을 원할 때 사용leaks
: 메모리에서 오브젝트를 참조하는 항목을 확인하려는 경우 사용vmmap
or heap
: reigon이나 인스턴스의 크기를 확인하고 싶을 때 사용