Ваши трассировки кажутся мне в основном нормальными ... (Помните, что есть начальная куча, которую ваш код не измеряет.)
MALLOC TEST. Size = 131072
Здесь вы выделяете блоки по 128 КБ, поэтому распределитель, вероятно, не будет использовать sbrk ()
, но mmap ()
.
0 ALLOC: HEAP SIZE: 0 MEMORY USAGE (statm): 1083 201 173 2 0 341 0
1 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1083 211 182 2 0 341 0
Это странно, ваша куча увеличивается, но не страницы вашей программы.
2 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1116 215 185 2 0 374 0
3 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1149 216 185 2 0 407 0
4 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1182 217 185 2 0 440 0
5 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1215 218 185 2 0 473 0
6 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1248 219 185 2 0 506 0
7 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1281 220 185 2 0 539 0
8 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1314 221 185 2 0 572 0
9 ALLOC: HEAP SIZE: 135168 MEMORY USAGE (statm): 1347 222 185 2 0 605 0
Здесь каждое выделение занимает дополнительные 33 страницы, или 132 КБ, из кучи, так что все в порядке.
MALLOC TEST. Size = 65536
0 ALLOC: HEAP SIZE: 0 MEMORY USAGE (statm): 1067 201 174 2 0 325 0
1 ALLOC: HEAP SIZE: 0 MEMORY USAGE (statm): 1067 211 182 2 0 325 0
2 ALLOC: HEAP SIZE: 0 MEMORY USAGE (statm): 1067 215 185 2 0 325 0
Здесь ваши выделения помещаются в исходную кучу.
3 ALLOC: HEAP SIZE: 196608 MEMORY USAGE (statm): 1115 216 185 2 0 373 0
4 ALLOC: HEAP SIZE: 196608 MEMORY USAGE (statm): 1115 217 185 2 0 373 0
5 ALLOC: HEAP SIZE: 196608 MEMORY USAGE (statm): 1115 218 185 2 0 373 0
Куча увеличена на 192 КБ, что соответствует выделенным страницам и соответствует трем выделениям.
6 ALLOC: HEAP SIZE: 393216 MEMORY USAGE (statm): 1163 219 185 2 0 421 0
7 ALLOC: HEAP SIZE: 393216 MEMORY USAGE (statm): 1163 220 185 2 0 421 0
8 ALLOC: HEAP SIZE: 393216 MEMORY USAGE (statm): 1163 221 185 2 0 421 0
То же самое ...
9 ALLOC: HEAP SIZE: 589824 MEMORY USAGE (statm): 1211 222 185 2 0 469 0
... и снова.
Выполнение с strace -e brk, mmap
поможет разобраться. Информация, доступная в sbrk ()
и / proc
, является точной, без задержек.