Google의 TCMalloc 소스 코드 (Windows 포팅)를 읽었습니다. 만약 pagesize
위의 코드 (즉 할당의 단위 인) 중 SE 수 dwPageSize 및 dwAllocationGranularity의 최대로서 산출 될 때dwPageSize와 dwAllocationGranularity 간의 관계
int getpagesize()
{
static int pagesize = 0;
if (pagesize == 0)
{
SYSTEM_INFO system_info;
GetSystemInfo(&system_info);
pagesize = std::max(system_info.dwPageSize, system_info.dwAllocationGranularity);
}
return pagesize;
}
. 내가 아는 것은이 두 값 사이의 관계의 종류입니다. 즉, 여기에 설명 된 방식으로 값을 계산해야합니까? 그리고 dwPageSize가 dwAllocationGranularity보다 클 수있는 상황이 있습니까?
관련없는 노트 - jemalloc을 사용하면 모든면에서 tcmalloc보다 성능이 우수합니다. – rustyx
할당 세분성이 페이지보다 작 으면 내가 볼 수있는 한별로 현명한 것이 아니지만 내가 말할 수있는 한 공식적으로 배제되지는 않았다. 아마 Google은 단지 여기에서 조심하고 있습니다. –
이것을 쓴 프로그래머는 "페이지 크기"의 의미를 이해하지 못합니다. 입상 성은 항상 페이지 크기의 정수 배가되어야하며 결코 작을 수는 없다는 점 외에는 관계가 없습니다. 세분성은 주소 공간 조각화에 대한 간단한 대책입니다. 영원히 64KB가되었습니다. 할당의 모든 페이지가 동일한 보호 속성을 갖는 것은 아닙니다. [this post] (http://stackoverflow.com/a/19466079/17034)를 참조하십시오. –