2010-12-14 14 views
1

私は、1.2GBのメモリを予約したC++で書かれたアプリケーションを持っていますが、600MBだけがコミットされています。 アプリケーションはCOM/DCOM、ADOを使用します。メモリの予約の原因

なぜ多くのメモリが予約され、決してコミットされていないのか分かりませんか?

おかげ

+0

実行中スレッド数はいくつですか? –

+0

約7スレッド – mathk

+0

この(かなり古い)KBの記事は、あなたのケースに適用されますか?http://support.microsoft.com/kb/193026? – sharptooth

答えて

2

アプリケーションが意図的にいくつかのアロケータのための大規模な地域を確保し、彼らだけが実際に必要とされてより小さな領域を犯す可能性があります。その場合、アプリケーションがメモリ割り当てを実際にアロケータに依頼し、メモリをコミットするまでそれらはコミットされません。

+0

どのアロケータがそれを行うことができますか、ありがとうございますか? – mathk

+0

@mathk:私たちの会社には、非常にシンプルな社内アロケータがあり、そのような振る舞いをしています。ほとんどの有資格デベロッパーがそれを書くことができると思います。 – sharptooth

+0

さて、entierプロジェクトでVirtualAllocを探していて、見つけられませんでした。予約されたメモリに他の機能はありますか? – mathk

関連する問題