Если на моем рабочем столе не хватает памяти, и я много перезаписываю, то я освобождаю или убиваю приложение, тратящее мою оперативную память Но после этого все мои десктопы / приложения были поменяны местами и ужасно медленны, знаете ли вы способ «разгрузить» (перезагрузить из пространства подкачки в ОЗУ) мой десктоп / приложения?
20
swapon
/swapoff
(как предполагает принятый в настоящее время ответ), вы можете отменить удаление диспетчера отображения и всех его дочерних элементов путем сброса их памяти процессов (что вызывает отмену отмены). См. Также «Как заставить замененный процесс zsh поменяться местами?» В stackoverflow.Ответы:
Если у вас действительно достаточно оперативной памяти, вы можете использовать эту последовательность (как root):
(для принудительной замены всех ваших приложений)
(при условии, что вы используете Linux)
источник
Следующий быстрый и грязный скрипт на python выводит память процесса в стандартный вывод. Это имеет побочный эффект загрузки любой выгруженной страницы или сопоставленного файла. Назовите это как
cat_proc_mem 123 456 789
где аргументы - идентификаторы процесса.Этот скрипт полностью специфичен для Linux. Он может быть адаптирован к другим системам с аналогичной
/proc
структурой (Solaris?), Но забудьте о его запуске, например, * BSD. Даже в Linux вам может потребоваться изменить определениеc_pid_t
и значенияPTRACE_ATTACH
иPTRACE_DETACH
. Это сценарий проверки принципа, а не пример хорошего программирования. Используйте на свой риск.Linux делает память процесса доступной как
/proc/$pid/mem
. Только определенные диапазоны адресов доступны для чтения. Эти диапазоны можно найти, прочитав информацию отображения памяти из текстового файла/proc/$pid/maps
. Псевдофайл/proc/$pid/mem
не может быть прочитан всеми процессами, которые имеют разрешение на его чтение: должен быть вызван процесс чтенияptrace(PTRACE_ATTACH, $pid)
.Смотрите также больше информации о
/proc/$pid/mem
.источник
kill -CONT 1234
где 1234 - PID), чтобы возобновить ее.Просто для полноты, GDB может создать дамп образа процесса. Я не проверял, что это отменяет его, но это должно - нет другого способа прочитать всю память процесса:
gdb -p $mypid
затем
(gdb) gcore /tmp/myprocess-core
Saved corefile /tmp/myprocess-core
источник
gcore $pid
также доступен за пределами GDB (в виде небольшого скрипта-обёртки)gdb --batch -p $pid -ex "gcore /dev/null" 2>/dev/null
swapon / swapoff полностью очистит ваше пространство подкачки, но вы также можете освободить его через файловую систему / proc. Вы хотите первый:
через http://linux-mm.org/Drop_Caches
источник
sysctl vm.drop_caches=X
, Кроме того, sysctl легче sudo.