如何释放内存以“完全休眠”进程?


10

与此类似:如何在Linux / Windows下“休眠进程”?

是否有任何方法可以使进程不驻留在内存中而使其休眠?例如:如果我不想使用Firefox,又不想关闭它的进程,并且需要可用内存,那么我该如何真正休眠该进程,以便释放Firefox保留的内存?

我需要Windows和Linux的解决方案!

Answers:


4

如果我不想使用Firefox,又不想关闭它的进程,并且需要可用内存,那么我该如何真正休眠该进程,以便释放Firefox保留的内存?

对于Windows,有Free Process Freezer

yeedl的答案所述,对于Linux和Mac OS X,有CrypoPID


如果您想提出一个自定义解决方案:

看看process dumping在Windows上,例如。ProcDump,使用WinDBG的CLI调试器将其恢复。

考察core dumpingLinux,例如。核心,使用CLI调试器(如GNU GDB)将其恢复。

我敢打赌,基于软件的解决方案可能不涉及调试器,但这是针对Stack Overflow的


您正在寻找一个非常特定的用例,为什么不只是暂停并让它换出呢?

您将花费更多的时间来使您的进程运行和暂停...

我相信您可以通过另一种更加无缝的方式优化工作流程。


5

Windows和Linux / Unix通过从可运行进程列表中将其删除,提供了一种挂起或停止进程执行的方法。

这不会直接影响进程所拥有的内存页面,但是随着时间的流逝,随着系统承受内存压力,这些页面将很容易替换为磁盘。

尝试将过程写到磁盘以供以后恢复对任何不平凡的事情都行不通。该过程恢复后,网络和窗口系统的打开句柄将立即失败。


它对于任何琐碎的事情也不起作用。:) +1
user541686 2011年

1
这些打开的手柄只是再次打开或存储在一起,所以这并不是真正的问题……
Tamara Wijsman

2

我知道在Firefox中您可以保存会话。

在Linux中,可以使用CrypoPID完成此操作。

这个问题和这个问题试图在Windows中回答,但是我找不到像在Linux中那样将应用程序状态保存到文件中的好方法。


1

对于Windows:

我不知道有什么方法可以在不杀死进程的情况下完全将其从内存中逐出,但是您可以通过最小化其主窗口来修剪其工作集。Microsoft有一篇文章对此进行了解释:在最小化其顶级窗口时,将修剪应用程序的工作集

因此,首先最小化主窗口,然后按照您链接问题中的建议中止过程。

您可以使用永远有用的Process Explorer来完成这两个任务。

  • 右键单击过程,窗口->最小化
  • 再次右键单击,挂起。

1

在Windows上,某些程序可以换出“未使用”的程序内存。
可以做到这一点的产品示例是商业化的过程套索
但是,甚至Process Lasso也建议不要这样做。

来自Windows内存优化器的真相

最好将虚拟内存的管理交给Windows,而不要自己掌握。这些程序带来的任何好处都是一种幻想,是暂时的。即使在清理后加载的程序看起来加载得更快,您迟早也会分页内存的增加。

现在关于Firefox,请参阅mozillaZine的“ 减少内存使用量-Firefox”,其中包含有关如何发现哪些扩展程序泄漏内存的大量建议。

还有Firefox扩展Memory Fox

尝试减少浏览器的RAM内存使用率,从而促进其他应用程序进程对RAM内存需求的可用RAM内存的增加。希望能促进内存恢复和保留的任何尝试。

以我的经验,此扩展只会延迟Firefox不可避免的内存膨胀。唯一真正的解决方案是不时关闭Firefox以释放内存。


1

您可以将STOP信号发送到Linux中的进程。停止的过程就像暂停一样。要恢复它,请发送过程CONT信号。要发送信号,您可以执行以下操作:

kill -STOP process_id

kill -CONT process_id

如果系统需要更多内存,则停止的进程将被换出。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.