我们有一个应用程序,可能会分配大量的小对象(取决于用户输入)。有时候应用程序耗尽内存并且崩溃。但是,如果我们知道内存分配变得紧张,那么会存在一些优先级较低的对象,这些对象可能会被破坏,从而使我们能够正常降级用户结果。检测内存运行低前在Windows分配开始失败
在调用'new'失败之前,检测进程内存的最佳方式是什么?我们可以调用API函数,如GetProcessWorkingSetSize()
或GetProcessMemoryInfo()
,但您如何知道何时达到给定机器的限制(例如,最大分配的80%)?
除非你的硬盘快满了,这个问题是不是在释放内存的机器上的金额(因为你有虚拟磁盘上的内存),但地址空间碎片是由于这些对象和可能的内存泄漏。 – 2012-08-12 12:37:49
@AlexeyFrunze在32位Windows内存分配似乎开始失败大约1.5GB。这不是内存泄漏,我们可以解释所有使用过的内存,但是我关于碎片的看法。 – snowdude 2012-08-13 09:00:38