php - C 언어 프로그래밍에서 언급된 메모리 조각화를 이해하는 방법은 무엇입니까? 왜 그를 가능한 한 피해야 합니까?
滿天的星座
滿天的星座 2017-06-24 09:42:23
0
3
910

메모리는 완전 랜덤 읽기 및 쓰기가 아닌데, 기계식 하드디스크와는 다른 물리적 매체인데, 메모리에 메모리 조각이 있으면 왜 성능에 영향을 미치나요? 이 메모리 조각화는 정확히 무엇을 의미합니까?

滿天的星座
滿天的星座

모든 응답(3)
女神的闺蜜爱上我

메모리 할당자는 일반적으로 큰 메모리 섹션에 대해 OS에 미리 적용한 다음 malloc()时标记一小段为已分配,free()이 작은 섹션이 할당될 때마다 할당되지 않은 것으로 표시합니다.

malloc/free의 순서는 일반적으로 임의적이므로 여러 번의 malloc/free 후에는 할당된 메모리와 할당되지 않은 메모리가 교대로 나타납니다. 예를 들어 分配1 -- 未分配1 -- 分配2 -- 未分配2즉, 할당되지 않은 메모리는 하나씩 "조각화"됩니다.

메모리 조각화의 단점:

  • 추가 메모리 사용량: 할당되지 않은 전체 메모리 양이 충분하더라도 연속 메모리가 분리되지 않을 수 있습니다. 이때 OS에서 추가 메모리를 신청해야 합니다

  • 캐시에 영향을 미칩니다: 캐시는 페이지를 기반으로 하며 페이지의 할당되지 않은 부분도 캐시를 차지합니다

phpcn_u1582

가장 좋은 방법은 시스템의 기본 프로세스 힙을 사용하지 않는 것입니다. 대신, 직접 새로운 메모리 힙을 신청하세요. 한 가지 유형의 데이터가 힙에 배치됩니다. 이는 자주 요청되고 공개되는 작은 데이터 조각에 적합합니다.
큰 데이터를 먼저 직접 malloc한 다음 자체 메모리 풀을 사용하여 관리할 수도 있습니다.
전자의 경우 Windows의 파일 관리자 탐색이 유용합니다. 예를 들어, 탐색된 디렉터리 트리 구조는 별도의 힙에 배치됩니다. HeapFree는 리프 노드를 반복해서 해제할 필요 없이 한 번에 전체 힙을 해제합니다.
두 번째, 예를 들어 libjpeg 자체에는 전용 메모리 풀이 있습니다.

为情所困
  • 버디 알고리즘에 대해 배울 수 있습니다

  • 이 PDF도 있습니다

  • 열 수 없으면 벽을 넘어가세요

  • 복잡하지 않은 malloc实现就去看看dlmalloc의 소스코드를 알고 싶습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!