Преимущества и недостатки vm.overcommit_memory=1 по сравнению с vm.overcommit_memory=0

В Linux, еслиvm.overcommit_memory=1, вы можете выделить огромные блоки памяти, но если вы используете меньше, это не повлияет на использование памяти.

Предположим, следующий код:

      const size_t size = 128;
void p = malloc(size);
process(p, size); // use up to size bytes

против

      const size_t HUGE_SIZE = 1ull * 1024ull * 1024ull * 1024ull; // 1 GB
const size_t size = 128;
void p = malloc(HUGE_SIZE);
process(p, size); // use up to size bytes

использование памяти в обоих случаях будет «похожим» (хорошо, может быть 4 КБ во втором случае против 128 байт в первом случае)

  • второй подход действительно занимает 4 КБ?
  • второй подход медленнее?
  • а если у меня несколько 1000 блоков по 1 Гб?
    что, если я часто выделяю/освобождаю эти несколько тысячных блоков?
  • больше недостатков я не вижу?
  • Я читал, что MacOS поддерживает то же самое, есть ли разница?

0 ответов

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