도달할 수 없는 메모리
Unreachable memory컴퓨터 과학에서 도달 불능 메모리는 메모리를 할당한 프로그램이 메모리를 참조하는 도달 가능한 포인터를 더 이상 가지지 않는 동적으로 할당된 메모리 블록입니다.마찬가지로 도달 불가능한 개체는 도달 가능한 참조가 없는 동적으로 할당된 개체입니다.비공식적으로 도달 불가능한 메모리는 프로그램이 직접 도달할 수 없는 동적 메모리이며, 직접 도달할 수 있는 객체에서 시작하여 포인터 참조 체인을 따라가면 도달이 불가능합니다.
가비지 컬렉터를 사용하는 동적 메모리 할당 구현에서는 개체가 도달할 수 없게 된 후 회수됩니다.가비지 콜렉터는 오브젝트에 도달할 수 있는지 여부를 판단할 수 있습니다.도달할 수 없다고 판단된 오브젝트는 할당을 해제할 수 있습니다.많은 프로그래밍 언어(예: Java, C#, D, Dylan, Julia)는 자동 가비지 컬렉션을 사용합니다.
반면, 명시적인 할당 해제가 필요한 동적 메모리 할당 구현에서 메모리에 도달할 수 없게 되면 메모리를 명시적으로 할당할 수 없게 됩니다.수동 메모리 관리를 사용하는 시스템에서 메모리에 도달할 수 없는 경우 메모리 누수가 발생합니다.
일부 가비지 컬렉터는 취약한 참조를 구현합니다.오브젝트가 약한 참조 또는 약한 참조를 포함하는 참조의 체인을 통해서만 도달할 수 있는 경우 오브젝트는 약하게 도달할 수 있다고 합니다.가비지 콜렉터는 도달 불능 오브젝트그래프를 도달 불능으로 처리하여 할당을 해제할 수 있습니다(반대로 오브젝트가 가비지 수집되지 않도록 하는 참조를 강력한 참조라고 부릅니다.약하게 도달 가능한 오브젝트는 강력한 참조로만 구성된 체인에서는 도달할 수 없습니다).Java 및 Python과 같은 일부 가비지 컬렉션 개체 지향 언어에는 취약한 참조가 있습니다.Java 패키지 java.lang.ref
는 소프트 레퍼런스, 취약 레퍼런스 및 팬텀레퍼런스를 지원하므로 오브젝트 도달 가능성 상태가 소프트 도달 가능 및 팬텀 도달 가능 상태가 추가됩니다.
도달할 수 없는 메모리(C와 같이 재확보하지 않는 언어)는, 소프트웨어의 에이징과 관련하는 경우가 많습니다.
외부 링크
- Nicholas, Ethan (4 May 2006). "Understanding Weak References". java.net. Archived from the original on 19 August 2010. Retrieved 1 October 2010.