Skip to content

NSCache, 딕셔너리 #71

@ujhong7

Description

@ujhong7

💁🏻‍♂ n-5 : NSCache딕셔너리로 캐시를 구성했을때의 차이를 설명해 주세요.

  1. key-value 쌍으로 데이터를 저장하는 자료구조라는 공통점이 있습니다.
  2. NSCache메모리 공간이 부족하면 자동으로 캐시된 객체를 제거함으로 메모리 관리 측면에서 유용합니다.
  3. NSCache동시에 여러 스레드에서 접근하여 데이터수정할 수 있습니다.
  4. 딕셔너리thread-safe하지 않아서 여러 스레드에서 동시 접근하면 오류가 발생할 수 있습니다.
  5. 메모리 관리성능 측면에서 NSCache를 쓰는 것을 권장하지만 
    오버헤드가 발생하므로 단일 스레드 환경이거나 작은 데이터를 캐싱할 때는 딕셔너리를 사용할 수 있습니다.

💁🏻‍♂️💁🏻‍♂️ NSCache는 왜 thread-safe한가요?

  • 딕셔너리와 달리 NSCache내부적으로 뮤텍스와 같은 동시성 제어 메커니즘을 사용합니다.

💁🏻‍♂️💁🏻‍♂️ NSCache는 왜 오버헤드가 발생하나요?

  1. 캐시된 객체많아지면 메모리 부족 현상이 발생할 수 있습니다.
  2. NSCache는 이를 방지하기 위해 캐시된 객체의 총 크기를 제한하고,
    제한에 도달하면 LRU알고리즘을 사용하여 오래 전에 사용된 객체제거합니다.
  3. 이런 추가적인 기능 때문에 딕셔너리보다 많은 오버헤드가 발생합니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions