2012-11-26 6 views
0

메모리 풀 시스템을 만드는 대신 응용 프로그램의 시작 부분에 각 객체에 대해 거대한 배열을 할당하고 사용할 수는 없으며 일부 객체는 배열보다 많은 인스턴스가 필요합니다. 크기가 두 배나 4 배로 늘었으므로 다시 최대 크기에 도달하지 못할 것입니다. 메모리보다 더 빠른 속도가 필요하므로 공정한 거래라고 생각합니까?메모리 풀 대신 고정 배열을 사용할 수 있습니까?

+1

메모리 풀과 어떻게 다른가요? – Pubby

+1

그게 보통 메모리 풀이 구현되는 방법입니다. –

+0

어떻게 더 빨라지겠습니까? 필요한만큼 객체를 두 배나 많이 생성 할 것이고 객체를 만드는 데 시간이 걸리기 때문에 느린 것처럼 들립니다. –

답변

4

설명하는 것과 메모리 풀 사이의 유일한 차이점은 일반적으로 풀 할당자가 메모리가 부족할 때 새 풀을 할당한다는 것입니다. 풀이 부족한 경우 전체 배열을 재 할당합니다. 이렇게하면 최악의 경우 런타임이 크게 늘어나고 재 할당 할 때 포인터와 참조가 무효화되지 않도록하는 스키마가 필요하므로 전체 프로그램의 성능이 저하 될 수 있습니다.

풀 할당자가 최악의 경우는 공간이 부족하여 새 배열을 할당해야하는 경우입니다. 할당 자의 최악의 경우, 새로운 배열을 할당하고 새로운 배열에 모든 이전 객체를 복사해야합니다. 분명히 후자는 더 많은 시간이 걸릴 것입니다.