Понимание использования виртуальной памяти> подкачивает + физический на Linux

Просто настройте групповую политику, чтобы "Автозарегистрировать" сертификаты пользователя/машины

http://technet.microsoft.com/en-us/library/cc787781%28WS.10%29.aspx

9
задан 13 March 2012 в 16:46
5 ответов

Может потребоваться нулевая память, которой нет в физической оперативной памяти или в файле подкачки.

Некоторые ресурсы, которые вы можете посмотреть:

Ваше приложение создает много пустых страниц памяти? Если это так, ваше приложение может извлечь большую пользу из:

Это позволяет сжимать и распаковывать в страницы памяти в реальном времени. В свою очередь, вы можете хранить все в ОЗУ, а не загружать на диск ( очень медленно ).

9
ответ дан 2 December 2019 в 22:31

Вот обсуждение виртуальной памяти и резидентной памяти:

https://stackoverflow.com/questions/561245/virtual-memory-usage-from-java-under-linux-too -much-memory-used

Обсуждение относится к процессам Java, но применимо ко всему, что работает под Linux. Главное в отношении virt заключается в том, что общая сумма включает в себя целую кучу вещей, которые нельзя использовать никогда. Virt - это то, на что стоит обратить внимание для 32-битных ОС (поскольку процессы будут достигать пределов адресного пространства), но в противном случае он в основном бесполезен. Как уже отмечалось, следует обратить внимание на резидентную память, которая будет ограничена доступной физической памятью и вашим свопом.

2
ответ дан 2 December 2019 в 22:31

Вероятно, это связано с тем, что адресное пространство процесса имеет размер, указанный вами, но на самом деле оно не выделяется ОС.

От: http: // lwn. net / Articles / 428100 /

В процессе попытки достичь этой цели "достаточно низких накладных расходов и отсутствия значительной задержки", разработчики Go сделали несколько упрощающих предположений, одно из которых состоит в том, что память, которой управляет работающее приложение, поступает из единого, практически непрерывного диапазона адресов. Такие предположения могут столкнуться с той же проблемой, с которой столкнулся ваш редактор с vi - другой код может выделять части в середине диапазона - поэтому разработчики Go приняли то же решение: они просто выделяют всю память, которая, по их мнению, может им понадобиться (они считали, разумно, что этих 16 ГБ должно хватить в 64-битной системе) во время запуска.

Так что иногда управление памятью осуществляется нелегко - наличие постоянного адресного пространства упрощает освобождение неиспользуемой памяти.

1
ответ дан 2 December 2019 в 22:31

The answer is probably MMAP - the data is on the disk, but it is "outside" the swap and can not be seen with "free" or "top" command.

If the java process is not too complicated, you can try play with "lsof" to find where the MMAP file is. However if this java process is complicated, there will be difficult to be seen.

0
ответ дан 2 December 2019 в 22:31

Меня также удивило, что Linux позволяет выделить больше виртуальной памяти, чем физическая память + пространство подкачки, но, видимо, это помогает в типичных ситуациях.

К счастью, есть параметр настройки кернела, с помощью которого можно переключить режим учета памяти. Этим параметром является vm.overcommit_memory, и он указывает, какой алгоритм используется для отслеживания доступной памяти. По умолчанию (0), он использует эвристический метод и перекоммутирует виртуальную систему памяти. Если вы хотите, чтобы ваши программы получали соответствующие ошибки вне памяти при выделении вместо того, чтобы подвергать свои процессы случайным убийствам, вам следует установить этот параметр равным 2.

-1
ответ дан 2 December 2019 в 22:31

Теги

Похожие вопросы