我询问这个问题是为了记录和一般的兴趣。多年前,我注意到Windows中存在一种奇怪的行为。我知道这在XP中有效,那时它也适用于Windows 2000甚至98,我认为这种行为仍然适用于Windows 7。
为了设置我的问题,请按照以下步骤尝试这个实验。
1.打开任务管理器并导航到进程选项卡。 2.打开您使用的应用程序,您知道它消耗了相当多的内存(一个Web浏览器应该可以很好地工作),并在任务管理器中找到该进程。 3.现在使用该应用程序,打开窗口、文档、网页等,直到应用程序的内存使用量显着增加。 4.记下应用程序的内存使用情况,并将应用程序最小化——您应该看到应用程序使用的内存量显着减少。 5.最后,恢复应用程序。
在恢复窗口后,您应该看到应用程序的内存使用量会稍微上升,但远不及在最小化应用程序之前的数量。这与任何基于GUI的应用程序都非常一致,但对于较大的应用程序来说更为显著。
问题:在操作系统内部,发生了什么过程强制进行(假定的)垃圾收集?此外,通过COM或一些.Net调用,是否有一种方法可以在不最小化应用程序的情况下强制执行此过程?如果是,请提供源代码。语言无关紧要。
如果您像我一样,可能会同时打开许多应用程序。内存使用量可能会逐渐增加,然后您需要关闭一些应用程序以释放资源。如果我至少能够将其集成到我控制的软件中,以类似于上述练习的行为强制操作系统进行垃圾收集,那将是很好的。
我知道在.Net中有一个GC对象,您可以随时调用垃圾清理。但是,它似乎与最小化应用程序时发生的内存清理的性质无关。
我希望这是一个令人费解的问题,并且经过多年的好奇心,有人可以给我一个好的技术解释。
页面文件和更深入地进入“兔子洞”
Kragen和Alex K.在回答这个问题时发表了一些有趣的东西。阅读他们发表的知识库文章后,我发现也可以通过一种方式来防止发生这种行为。什么情况下您想要防止此分页释放发生?我正在阅读文档,尽可能多地了解这方面的知识。这里有很多对我来说是新信息,因为我从未需要在.Net应用程序中实现任何内容。考虑一个使用案例将帮助我理解为什么以及何时我会想要避免这种行为。
为了设置我的问题,请按照以下步骤尝试这个实验。
1.打开任务管理器并导航到进程选项卡。 2.打开您使用的应用程序,您知道它消耗了相当多的内存(一个Web浏览器应该可以很好地工作),并在任务管理器中找到该进程。 3.现在使用该应用程序,打开窗口、文档、网页等,直到应用程序的内存使用量显着增加。 4.记下应用程序的内存使用情况,并将应用程序最小化——您应该看到应用程序使用的内存量显着减少。 5.最后,恢复应用程序。
在恢复窗口后,您应该看到应用程序的内存使用量会稍微上升,但远不及在最小化应用程序之前的数量。这与任何基于GUI的应用程序都非常一致,但对于较大的应用程序来说更为显著。
问题:在操作系统内部,发生了什么过程强制进行(假定的)垃圾收集?此外,通过COM或一些.Net调用,是否有一种方法可以在不最小化应用程序的情况下强制执行此过程?如果是,请提供源代码。语言无关紧要。
如果您像我一样,可能会同时打开许多应用程序。内存使用量可能会逐渐增加,然后您需要关闭一些应用程序以释放资源。如果我至少能够将其集成到我控制的软件中,以类似于上述练习的行为强制操作系统进行垃圾收集,那将是很好的。
我知道在.Net中有一个GC对象,您可以随时调用垃圾清理。但是,它似乎与最小化应用程序时发生的内存清理的性质无关。
我希望这是一个令人费解的问题,并且经过多年的好奇心,有人可以给我一个好的技术解释。
页面文件和更深入地进入“兔子洞”
Kragen和Alex K.在回答这个问题时发表了一些有趣的东西。阅读他们发表的知识库文章后,我发现也可以通过一种方式来防止发生这种行为。什么情况下您想要防止此分页释放发生?我正在阅读文档,尽可能多地了解这方面的知识。这里有很多对我来说是新信息,因为我从未需要在.Net应用程序中实现任何内容。考虑一个使用案例将帮助我理解为什么以及何时我会想要避免这种行为。