32-битная ОС имеет ограничение 4 ГБ, обычно некоторые (до половины на win32) зарезервированы для операционной системы - отображение адресного пространства памяти графической карты и т. Д.
Linux поддерживает 64 ГБ адресного пространства (использование Intel 36-битной PAE) в 32-битных версиях.
РЕДАКТИРОВАТЬ: хотя каждый процесс ограничен 4 ГБ
Основная проблема с выделением большого объема памяти заключается в том, что если вы хотите, чтобы она была заблокирована в ОЗУ, то вам, очевидно, нужно многооперативной памятиИли, если вам нужно, чтобы все было непрерывно - гораздо проще получить 4 * 1 ГБ порции памяти, чем один 4 ГБ порцию, и ничего больше не мешает.
Обычный подход состоит в том, чтобы выделить всю необходимую память.в начале программы, так что вы можете быть уверены, что, если приложение не будет возможно, оно сразу же выйдет из строя, а не когда выполнит 90% работы.
Не запускайте другие приложения, интенсивно использующие память, нав то же время.
Есть также несколько флагов, которые вы можете использовать, чтобы указать ядру, что это приложение должно получить приоритет в памяти или держать память заблокированной в ОЗУ - извините, это слишком долго, так как я делал HPC на Linux, и явероятно, устарел в современных ядрах.