1
Linux mint64 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

次のプログラムは、上記の 64 ビット システムにインストールしたばかりの Linux Mint 15 で失敗します。4GBの「物理」メモリを備えたVMで実行されています。私のMacでも問題なく動作します

Linux hercules 3.2.0-24-generic #39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

ulimit は、有効な制限がないことを表明します。strace は mmap の失敗を示します。

mmap(NULL, 4836167680, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)

さらなる実験では、オーバーコミットをオンにすると「機能」することが示されています。

freeコマンドは次を示します。

$ free
             total       used       free     shared    buffers     cached
Mem:       3993228    3098188     895040          0     137680    2255620
-/+ buffers/cache:     704888    3288340
Swap:      1046524          0    1046524

写真に新しい制御メカニズムはありますか?手元に十分な (?) 物理メモリがあるのに、なぜスワップが問題になるのですか?

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv) {
  void *m = malloc(4836032512);
  if (m == 0) {
    fprintf(stderr, "Could not allocate ~4MB of memory with malloc?\n");
    return 1;
  }
  return 0;
}

4 GB のメモリを要求する場合は、4 GB 以上のメモリが必要であり、私が試した他のシステムには 4 GB 以上のメモリがあることは明らかです。

4

0 に答える 0