2016-06-15 2 views
2

Как я могу использовать программу виртуальная память в Windows?Как сделать программу виртуальной памятью?

У меня есть длинный скрипт perl, который использует 6GB + памяти и увеличивается. Моя машина имеет только 8GB или RAM. Вероятно, это связано с утечкой памяти в модуле, но я ничего не могу с этим поделать.

Можно ли использовать виртуальную память, или это что-то контролируется только Windows?

+0

Имейте в виду, что 32-разрядная программа ограничена использованием 2 или 3 ГБ, независимо от того, сколько у вас памяти. Вероятно, вам понадобится 64-битная сборка Perl ('x64' в выводе' perl -V: archname'), чтобы перейти к точке, где вы используете виртуальную память. Это произойдет автоматически по мере необходимости. – ikegami

+0

@ikegami Это определенно 64-разрядный 'perl'. В настоящее время он сидит на * 7,17 ГБ *, используя RAM из * 8 ГБ *. Я бы подумал, что до этого момента он должен поменяться виртуальной памятью. – CJ7

+2

Очевидно, что физическая память лучше для всего, чем виртуальная память. Не замедляет работу диска IO или процессов, использующих его; это беспроигрышный. Почему операционная система использует виртуальную память, когда она может использовать физическую и перемещать ее по мере необходимости? – oldtechaa

ответ

6

ОС автоматически предоставит виртуальную память, если это необходимо, и если она настроена на наличие подкачки. Вы не можете контролировать это из программы Perl.

Если ваша программа Perl имеет утечку памяти, в конце концов она начнет заменяться файлом страницы. Когда его потребление памяти приводит к тому, что общая память превышает сумму вашего физического ОЗУ плюс файл страницы, все будет замедляться при обходе, и процессы могут стать невосприимчивыми и/или сбой.

В любом случае размер файла страницы не может изменяться динамически, требуется перезагрузка. Единственное долгосрочное решение - найти и устранить утечку.

+0

Я пропустил программу, и она приблизилась к пределу физической памяти моей машины. Я бы хотел, чтобы он поменялся на страницу-файл намного раньше, чтобы он не нарушал работу остальной системы. Кстати, утечка памяти, вероятно, будет в импортированном модуле. Мне потребовалось бы слишком много времени, чтобы найти его. – CJ7

+0

Windows поменяется, когда потребуется. Как только общая фиксированная память станет больше, чем физическая оперативная память, она снизится, особенно если в других процессах много чего происходит. Это неизбежно. –

+0

@ CJ7, он ничего не замедляет, чтобы приблизиться к пределу вашей оперативной памяти. И если ему нужно больше, то он поместит неиспользуемые блоки вашего Perl RAM в виртуальную машину, и поскольку пропущенные блоки не используются, вы должны увидеть небольшое замедление. – oldtechaa

Смежные вопросы