我有一个用C++编写的应用程序,它保留了1.2GB内存,但只有600MB被提交。 应用程序使用COM/DCOM,ADO。什么导致内存保留
我会问你,如果你有任何想法,为什么这么多的内存是保留和永不承诺?
感谢
我有一个用C++编写的应用程序,它保留了1.2GB内存,但只有600MB被提交。 应用程序使用COM/DCOM,ADO。什么导致内存保留
我会问你,如果你有任何想法,为什么这么多的内存是保留和永不承诺?
感谢
应用程序可能有意保留一个大的区域对于一些分配,只有当他们真正需要提交较小的区域。如果是这样的话 - 直到你让应用程序确实要求分配器分配内存并且它确实提交了内存之后,它们才会被提交。
谢谢你知道哪个分配器可以做到这一点? – mathk 2010-12-14 15:26:24
@mathk:我们公司有一个非常简单的内部分配器,它的行为就像这样,所以我想几乎所有合格的开发人员都可以编写一个分配器,它可以是任何东西,所以没有机会猜测。 – sharptooth 2010-12-15 07:58:16
好的是,我正在entier项目中搜索VirtualAlloc,但找不到一个。是否有其他功能保留内存? – mathk 2010-12-15 09:15:46
你有多少个线程正在运行? – 2010-12-14 22:23:50
约7个主题 – mathk 2010-12-15 08:51:53
这是(相当老)KB文章适用于您的情况http://support.microsoft.com/kb/193026? – sharptooth 2010-12-16 10:11:55