сервер pgadmin4 на windows

Я не знаю, почему вы думаете, что ваш процесс должен иметь доступ к 4 ГБ. Согласно Ограничениям памяти для выпуска Windows в MSDN, в 64-разрядной Windows 7, 32-разрядный процесс по умолчанию получает 2 ГБ. * Именно это и заканчивается.

So , есть ли способ обойти это?

Ну, вы можете создать пользовательскую сборку из 32-разрядного Python, которая использует флаг IMAGE_FILE_LARGE_ADDRESS_AWARE, и перестроить numpy и все ваши другие модули расширения. Я не могу обещать, что весь соответствующий код действительно безопасен для работы с флагом с большим адресом; есть хороший шанс, но если кто-то уже это сделал и не протестировал, «хороший шанс» - это лучший, кого, вероятно, узнают.

Или, что более очевидно, просто используйте 64-битный Python вместо этого .


Объем физической ОЗУ полностью не имеет значения. Кажется, вы думаете, что у вас есть «ограничение 8 ГБ» с 8 ГБ ОЗУ, но это не так, как это работает. Ваша система занимает всю вашу RAM плюс любое место подкачки, в котором она нуждается , и делит ее между приложениями; приложение может получить 20 ГБ виртуальной памяти, не получая ошибку памяти даже на машине 8 ГБ. Между тем, 32-разрядное приложение не имеет доступа к более чем 4 ГБ, и ОС будет использовать некоторые из этих адресных пространств (половина из них по умолчанию в Windows), поэтому вы можете получить только 2 ГБ даже на машине с 8 ГБ это ничего не работает. (Нельзя сказать, что когда-либо можно «ничего не запускать» на современной ОС, но вы знаете, что я имею в виду.)


Итак, почему это работает на вашем Linux-поле?

Поскольку ваш Linux-модуль настроен на предоставление 32-битных процессов 3,5 ГБ виртуального адресного пространства, или 3,99 ГБ, или ... Ну, я не могу сказать вам точный номер, но каждый дистрибутив, который я видел для много лет был настроен как минимум на 3,25 ГБ.


* Также обратите внимание, что вы даже не получаете полные 2 ГБ для своих данных; вашей программы. Большая часть того, что ОС и его драйверы делают доступными для вашего кода, находится в другой половине, но некоторые биты сидят в вашей половине, вместе с каждой загружаемой DLL и любым необходимым пространством и другими вещами. Это не слишком много, но это не ноль.

0
задан vinz 6 March 2019 в 08:36
поделиться