1

Я установил размер виртуальной памяти для управления системой. Хотя на диске достаточно места, я столкнулся с ошибкой «недостаточно памяти», вопреки моему предположению, что в этом случае система должна просто выделять больше виртуальной памяти. Так что же такое политика автоматического выделения виртуальной памяти в Windows? Кроме того, требует ли Windows, чтобы память, используемая одним процессом, помещалась в физическую память, даже если некоторые потоки простаивают?

У меня проблемы с Windows x64 в целом (если он должен быть конкретным, то это Win 8.1, 16GB RAM, занимаюсь научными вычислениями).

РЕДАКТИРОВАТЬ: Чтобы быть более конкретным, программное обеспечение MATLAB R2015a (win64) и Gurobi 6.0.5 (win64). У обоих были такие ошибки в разных случаях. Я не думаю, что они имеют какое-либо отношение к 32-битным вещам. Также я думаю, что ошибка просто означает, что функция выделения памяти (скажем, new или malloc) возвращает что-то недопустимое.

1 ответ1

1

Скорее всего, процесс, выполняющий вычисления, на самом деле 32-битный. Такие процессы ограничиваются адресацией от 2 до 4 ГБ (в зависимости от того, как приложение компилируется) независимо от того, является ли ОС 32-разрядной или 64-разрядной.

Если приложение использует .NET Framework, вступают в действие другие ограничения, даже если приложение является 64-разрядным. Если вы не мурлыкаете с .NET 4.5 или более поздней версии.

Наконец, даже чистые 64-битные приложения сталкиваются с проблемами, если они не были правильно закодированы. Я видел сбой 64-битных приложений, потому что внутри они все еще работают с 32-битными переменными для таких вещей, как индексы. Когда вы слишком сильно продвигаете такое приложение (например, попробуйте вставить 4 294 967 297-й элемент), вы получите неизбежный сбой, даже если у вас будет достаточно ОЗУ.

Вот хорошая документация от MS о том, как Windows расширяет файл подкачки при необходимости:

когда плата за системную фиксацию составляет более 90 процентов от предела системной фиксации, файл подкачки увеличивается для ее поддержки. Это продолжается до тех пор, пока размер файла подкачки не увеличится в три раза по объему физической памяти или 4 ГБ, в зависимости от того, что больше. Все это предполагает, что логический диск, на котором размещен файл подкачки, достаточно велик, чтобы вместить рост.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .