我正在处理的一个基于C++和Windows的服务器应用程序,在Virtual Size达到大约2GB时会出现内存不足的情况(32位应用程序,启用了大地址空间支持)。然而,我注意到Private Bytes显著较小。当前的统计数据是:
Virtual Size: 2.6GB Private Bytes: 1.6GB
这两个数字的差异为1GB。所以我的问题是:
- 这1GB的差异表示什么?
- 我的应用程序是因为Virtual Size还是Private Bytes而导致内存不足?
我还通过VMMap实用工具运行了我的应用程序,并注意到“Private Data”通常比已提交的大小高出一个数量级。换句话说,Private Data的总大小可能为200MB,但已提交的大小只有20MB。我不太确定私有数据是什么,但根据我目前的研究结果,它似乎只是堆的一部分。
编辑:
我使用Purify查找了内存泄漏,但并没有找到任何有用的信息。内存泄漏以无指针内存的形式出现似乎不是问题,但内存泄漏在于保留了太长时间的内存可能是一个问题,我还没有去研究。然而,关键是要理解为什么Virtual Size会导致内存不足问题。了解问题1对我来说是最重要的。