메모리 조각화는 시스템에 기술적으로 사용 가능하지만 컴퓨터에서 사용할 수없는 메모리가 포함되어있을 때 발생합니다. 다양한 작업에 필요한 메모리를 할당하는 메모리 할당 기는 프로그램에서 필요로하는 메모리 블록을 분할하고 할당합니다. 데이터가 삭제되면 더 많은 메모리 블록이 시스템에서 비워지고 사용 가능한 메모리 풀에 다시 추가됩니다. 할당 자의 작업 또는 이전에 점유 한 메모리 세그먼트의 복원으로 인해 메모리 풀에서 사용하기에는 너무 작거나 너무 격리 된 메모리의 블록 또는 바이트가 발생하면 조각화가 발생합니다. 조각화는 컴퓨터의 여유 메모리를 상당히 많이 차지할 수 있으며 종종 메모리 부족 오류 메시지를 실망시키는 원인이됩니다.
내부 조각화
내부 조각화는 메모리 할당자가 클라이언트에 할당 된 메모리 블록 내부에 추가 공간을 비워 둘 때 발생합니다. 이는 일반적으로 프로세서의 설계에서 메모리를 특정 크기의 블록으로 잘라야한다고 규정하기 때문에 발생합니다. 예를 들어 블록을 4, 8 또는 16 바이트로 균등하게 분할해야 할 수 있습니다. 이러한 상황이 발생하면, 예를 들어 57 바이트의 메모리가 필요한 클라이언트는 60 바이트 또는 64 바이트를 포함하는 블록이 할당 될 수 있습니다. 클라이언트가 낭비 할 필요가없는 추가 바이트는 시간이 지남에 따라 이러한 작은 덩어리가됩니다. 사용하지 않는 메모리의 양은 할당자가 사용할 수없는 많은 양의 메모리를 축적하고 생성 할 수 있습니다. 이러한 쓸모없는 바이트는 모두 더 큰 메모리 블록 안에 있기 때문에 조각화는 내부로 간주됩니다.
외부 조각화
외부 조각화는 메모리 할당자가 할당 된 메모리 부분 사이에 사용되지 않은 메모리 블록 섹션을 남길 때 발생합니다. 예를 들어, 여러 메모리 블록이 연속 라인에 할당되었지만 라인의 중간 블록 중 하나가 해제 된 경우 (아마도 해당 메모리 블록을 사용하던 프로세스가 실행을 중지했기 때문에) 사용 가능한 블록은 조각화됩니다. 해당 블록에 맞는 메모리가 필요한 경우 나중에 할당 자에서 블록을 계속 사용할 수 있지만 이제는 더 큰 메모리 요구 사항에 대해 블록을 사용할 수 없습니다. 더 큰 작업에 사용할 수 있으려면 총 메모리가 연속적이어야하므로 시스템에서 사용할 수있는 총 여유 메모리로 다시 집중할 수 없습니다. 이러한 방식으로 사용 가능한 메모리의 전체 섹션이 종종 너무 작아서 중요한 용도로 사용되지 않는 전체와 분리되어 시간이 지남에 따라 주요 작업에 사용 가능한 메모리가 부족해질 수있는 전체 사용 가능한 메모리가 감소 할 수 있습니다.
단편화는 시스템에 큰 문제를 의미 할 수 있습니다.
조각화는 시간이 지남에 따라 축적되어 작고 쓸모없는 메모리 블록을 만들고 컴퓨터의 사용 가능한 메모리 양을 제한하기 때문에 문제가 될 수 있습니다. 진행됨에 따라 단편화로 인해 단기적으로 시스템 성능이 느려지고 느려질 수 있습니다. 장기적으로 조각화는 컴퓨터 또는 서버의 수명을 평균 30 % 단축 할 수 있습니다. 두 가지 유형의 조각화 중 내부는 외부보다 예측 가능합니다. 낭비되는 공간의 양은 메모리 할당 자의 매개 변수 (할당 된 블록의 크기)에 의해 결정되기 때문입니다. 이는 상수입니다. 또한 내부 조각화로 인해 손실되는 전체 메모리 양은 점진적으로 누적 될 수 있지만 일반적으로 외부 조각화로 손실 된 메모리 양보다 적습니다. 반면에 외부 조각화는 대부분의 경우 시스템에서 여러 프로세스가 정기적으로 시작 및 중지되고 다양한 시간 동안 사용되는 메모리 블록이 채워진 순서와 다른 순서로 해제되기 때문에 예측하기가 더 어렵습니다. 사용 가능한 메모리에 공백을 남깁니다.
성능 향상을위한 단편화 방지
RAM을 최적화 할 때 유일하게 유용한 해결책은 시스템을 재부팅하는 것입니다. 이렇게하면 장기 실행 프로그램에서 사용중인 메모리의 대부분이 지워지고 컴퓨터가 메모리 할당을 새로 시작할 수 있습니다. 최신 컴퓨터의 가상 메모리 관리자가 RAM 사용을 지속적으로 최적화하기 위해 작동하기 때문에 RAM 조각 모음을 주장하는 도구는 잘못된 것입니다. 그러나 하드 드라이브의 경우 시스템 성능을 최대화하기 위해 일부 조각 모음이 필요할 수 있습니다. Windows Vista 이상 버전을 실행하는 경우 시스템이 주기적으로 하드 드라이브 공간을 자동으로 조각 모음합니다. 시스템 성능이 느려지고 조각 모음을 직접 실행하려면 "시작"을 클릭 한 다음 "모든 프로그램 | 보조 프로그램 | 시스템 도구 | 디스크 조각 모음"을 클릭하여 프로세스를 수동으로 시작할 수 있습니다. 마지막으로 "지금 조각 모음"을 클릭합니다. 이 프로세스는 하드 디스크의 조각화 정도에 따라 몇 분에서 몇 시간까지 걸릴 수 있지만 좋은 소식은 디스크 조각 모음이 실행되는 동안 컴퓨터를 사용할 수 있다는 것입니다.
조각화 문제가 모든 운영 체제에 동일하게 적용되는 것은 아닙니다. Mac 컴퓨터의 경우 Mac OS X은 파일이 기록 될 때 디스크 공간을 자동으로 최적화하므로 조각 모음이 필요하지 않습니다. Linux 시스템은 또한 연속적인 형식이 아닌 분산 된 형식으로 메모리를 할당하여 파일을 확장 할 수있는 공간을 제공하기 때문에 정기적 인 조각 모음이 필요하지 않습니다. 시스템 성능이 저하되는 Linux 사용자는 하드 디스크의 크기를 늘리는 것을 고려해야합니다. 마지막으로, 조각 모음은 실제로 솔리드 스테이트 드라이브의 사용 가능한 수명을 단축 할 수 있으므로 솔리드 스테이트 스토리지 드라이브 (예 : USB 드라이브)를 조각 모음해서는 안됩니다.