Ограничение выделения памяти (программирование на C) в облачном движке Google

Конфигурация облачного движка Google - 2 виртуальных ЦП, 13 ГБ памяти, Ubuntu-1604.

Кажется, что максимальный объем памяти, который может выделить "malloc", составляет чуть менее 13 ГБ (в следующем примере работает 12 ГБ, неправильное использование 12,5 ГБ приведет к ошибке..). Это потому что виртуальная память как-то не включена? Любые другие возможные причины?

  unsigned long input_size = 1024*1024*1024*3;
  unsigned int *h_data = (unsigned int *)malloc(input_size*sizeof(unsigned int));

1 ответ

Решение

Использовать free Команда, чтобы увидеть, сколько свободной памяти у вас есть. Он также покажет, сколько места подкачки у вас есть.

Сервер может быть настроен на 13 ГБ памяти, но, безусловно, другие вещи (например, ОС) используют память для других целей, и не все 13 ГБ доступны для вашего приложения.

Ожидаете ли вы, что сможете использовать больше памяти, чем физически доступно, используя пространство подкачки?

Другие вопросы по тегам