Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在耗尽Windows(或任何操作系统)页面文件之前停止应用程序分配内存 我目前面临的情况是,我的C++基于OpenGL的应用程序故意分配大量的内存来存储资源。事实上,如此之多的窗口只是停止,我得到了一个完全空白的屏幕。后来,我 发现(随机-Windows甚至没有告诉我!)Windows被迫将我的页面文件扩展到30GB_C++_Windows_Memory_Memory Management - Fatal编程技术网

在耗尽Windows(或任何操作系统)页面文件之前停止应用程序分配内存 我目前面临的情况是,我的C++基于OpenGL的应用程序故意分配大量的内存来存储资源。事实上,如此之多的窗口只是停止,我得到了一个完全空白的屏幕。后来,我 发现(随机-Windows甚至没有告诉我!)Windows被迫将我的页面文件扩展到30GB

在耗尽Windows(或任何操作系统)页面文件之前停止应用程序分配内存 我目前面临的情况是,我的C++基于OpenGL的应用程序故意分配大量的内存来存储资源。事实上,如此之多的窗口只是停止,我得到了一个完全空白的屏幕。后来,我 发现(随机-Windows甚至没有告诉我!)Windows被迫将我的页面文件扩展到30GB,c++,windows,memory,memory-management,C++,Windows,Memory,Memory Management,对于可能占用大量私有内存,但又需要在低内存硬件上运行以及利用具有大量内存的硬件的应用程序,则必须设计某种方案来检测最大内存使用量(以及适当的操作) 在这种情况下,我认为我们想要在分配太多而无法将窗口推到边缘和分配不足(造成糟糕的用户体验)之间划清界限,因此我正在寻找一种方法来确定停止在应用程序中分配内存的合理点,以保护窗口不受自身影响。通过听马克·鲁西诺维奇(MarkRussinovich())的一点自我教育,我找不到任何经验法则 如果有的话,对于应用程序来说,什么样的最佳实践措施可以限制其自身

对于可能占用大量私有内存,但又需要在低内存硬件上运行以及利用具有大量内存的硬件的应用程序,则必须设计某种方案来检测最大内存使用量(以及适当的操作)

在这种情况下,我认为我们想要在分配太多而无法将窗口推到边缘和分配不足(造成糟糕的用户体验)之间划清界限,因此我正在寻找一种方法来确定停止在应用程序中分配内存的合理点,以保护窗口不受自身影响。通过听马克·鲁西诺维奇(MarkRussinovich())的一点自我教育,我找不到任何经验法则

如果有的话,对于应用程序来说,什么样的最佳实践措施可以限制其自身分配过多,并使Windows(或任何操作系统)不断交换页面文件/耗尽页面文件空间(杀死系统)

我们是否应该监视页面文件大小和分配给进程的私有字节,并在私有字节增长到任意百分比或页面文件大小时停止分配纹理,作为避免系统死机的最后手段?然后,问题被推到“你如何理解这一点”

感谢所有的帮助


谢谢-Laythe

你知道,不分配这么多内存不是更容易吗?我的意思是,很明显,如果你能在内存不足的系统上运行,那么你必须有办法阻止自己分配更多的内存,并使用你所拥有的。那么,为什么不从一开始就这样做呢?或者如果你需要一个经验法则,不要分配比实际存在的内存更多的内存。@Nicol-是的,这就是问题所在,你在什么时候停止?我想分配“尽可能多”的资源,为用户提供良好的用户体验,但不足以使Windows崩溃,还可能减少另一个安全数量。但在操作系统中,并不是只有一个数字叫做“空闲内存”。当前RAM容量、操作系统版本(32/64位)、当前私有字节数、工作集大小等有很多因素在起作用。@Nicol所有这些因素都会对何时停止分配产生重大影响,并且正在寻找人们通常做什么的指针。我在我的电脑上做的任何测试在另一台电脑上都不太可能是最优的,所以我想知道操作系统是否可以为应用程序提供关于绝对最大分配的“提示”,或者应用程序如何确定它。我知道-很多人都不在乎。为什么你要把分配内存与“良好的用户体验”联系起来?您可以分配应用程序所需的内存以完成其工作。您不能仅仅因为内存在那里就分配内存。“您可以使用
GlobalMemoryStatusEx
函数来确定您的应用程序可以分配多少内存,而不会严重影响其他应用程序。”请参阅