我在Windows2003PAE的x86上运行了一个应用程序。操作系统有8GB内存。在应用程序运行过程中,分配了一些内存,当主机进程增长到~1GB,系统内存总量增长超过4GB时,我得到了OOM异常。
当时大约有4GB的RAM空闲,一个进程大约有1GB到2GB的限制。
所以问题是:如果我有足够的空闲内存,那么这个异常的来源在哪里?
发布于 2014-02-01 08:38:36
重要的不是系统有多少可用内存,而重要的是进程有多少内存可用。因为您的进程是32位进程,所以硬限制为4GB。
所以你没有4GB的空闲内存,系统有。您已经使用了4GB的分配,内存不足。
前进的唯一途径是移动到64位进程。显然,这需要64位系统。
发布于 2013-11-25 09:52:40
还记得在回答‘我的程序使用了多少内存?’的问题时,你还记得吗?没有那么简单,答案取决于你测量的计数器。
我将从开始检查到使用过程监视器工具监视应用程序,并观察:
还请查看那个问题,以找到有关不同内存使用指示符的更多详细信息。
由于我也是WinDbg的忠实粉丝,所以当OOM异常发生时,我会对进程进行一个完整的内存转储,并对其进行详细分析。
https://stackoverflow.com/questions/20188796
复制相似问题