2013-08-27 3 views
4

NSCache 제안에 대한 기사를 읽었습니다. 많은 사람들이 NSCache에서 NSPurgeabledata를 사용하는 것이 좋습니다. 그러나 NSCache는 메모리가 부족하거나 카운트/비용 한도에 도달했을 때 이미 NSCache의 컨텐트를 제거 할 수 있지만 NSPurgeabledata를 사용해야하는 이유는 무엇입니까? 이미 데이터 객체를 사용하는 것보다 속도가 느리지 않습니까? 우리는 여기서 어떤 이점을 얻을 수 있습니까?NSCache에서 NSPurgeabledata를 사용하는 이유는 무엇입니까?

답변

1

개수 제한 및 총 비용 한도가 엄격하게 적용되지 않습니다. 즉, 캐시가 제한 중 하나를 넘으면 캐시의 구현 세부 사항에 따라 일부 오브젝트가 즉각적으로, 나중에 또는 전혀 제거되지 않을 수 있습니다. 여기 NSPurgeabledata를 사용하면 다음과 같은 이점이 있습니다. -

제거 가능한 메모리를 사용하면 시스템에서 메모리를 빠르게 복구 할 수 있으므로 성능이 향상됩니다. 페이징 가능한 것으로 표시된 메모리는 페이징이 시간 소모적 인 프로세스이기 때문에 가상 메모리 시스템에서 회수 할 때 디스크로 페이징되지 않습니다. 대신 데이터가 삭제되고 필요하면 나중에 다시 계산해야합니다. 잠금 메커니즘처럼 작동하거나 동기화처럼 작동한다고 말할 수 있습니다. 데이터가 하나의 쓰레드에 의해 접근한다면 다른 쓰레드는 첫 번째 쓰레드가 완료되지 않는 한 같은 쓰레드에 접근 할 수 없다.

+0

NSPurgeableData는 NSCache보다 더 민감합니다 (메모리 재활용). – Pei

+0

YEs @Pei, 당신이 걸릴 수 있습니다 :) –

관련 문제