お世話になります。
linuxのメモリ確保単位について質問があります。
C言語のmallocを利用した下記のプログラムを作成して
psコマンドのメモリ使用量(VSZとRSS)の増え方を見てみました。
質問内容ですが、
1Kサイズのメモリを確保した際にVSZとRSSが増えず、
200Kぐらい確保したら、ようやく増えました。
これは、mallocでメモリのheap領域を確保する際の単位が
1K単位ではなく、200K等の単位で確保するためでしょうか?
もしご存知の方がいらっしゃいましたらご回答お願いします。
検証環境:Ubuntu18.04(kernel version:4.15.0-1031-aws)
※検証用プログラム(while文を200回ぐらいループさせたらVSZとRSSが増えました)
#include<stdio.h> #include <stdlib.h> #include <string.h> int main() { int ch; void *mem; const int size = 1024;//1KB puts("pause ... (start ..)"); while (( ch = getchar()) != 'n' ){ puts("pause ... (next .. malloc)"); getchar(); mem = (void*)malloc(size); /* VSZが増加? */ if (!mem) { puts("can't alloc"); return 1; } puts("pause ... (next .. memset)"); getchar(); memset(mem, 1, size); /* RSSが増加? */ puts("pause ... (next .. loop[cancel->n])"); } return 0; }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/17 03:46