私はWindowsでメモリ管理を学んでいます。私は、ウィンドウ内のプロセスがデフォルトでヒープを持っていることを知っています。これは将来拡張できます。また、プロセスは追加の(プライベート)ヒープを作成することができます。ウィンドウでプライベートヒープを作成できるのはなぜですか?そのようなアプローチの利点は何ですか?既定のヒープ(再割り当ての可能性あり)の使い方は分かります。または、再割り当てを最適化する別の方法ですか?ウィンドウでプライベートヒープを作成できるのはなぜですか?
2
A
答えて
3
HeapCreate
を見ると、ヒープの動作方法を変更するオプションが複数あることがわかります。 HEAP_NO_SERIALIZE
は速くなりますが、自分自身でスレッド同期を処理する必要があります。
異なる寿命の異なるオブジェクトを割り当てると、複数のヒープを持つことも有益です。断片化を減らすために作業の一環として割り当てられ、割り当てが解除された小さなオブジェクト(およびマルチスレッドの場合はロックの競合)が頻繁に発生する場合は、長い長寿命のオブジェクトを独自のヒープに配置することもできます。
コメントに記載されているように、HeapDestroy
を呼び出してすべての割り当てとヒープ自体を1回の呼び出しで解放することができますが、そこに割り当てられたすべての機能を完全に制御できる場合にのみ意味があります。デフォルトのヒープを破棄することは許されていないので、このトリックを使用するために独自のプライベートヒープを作成する必要があります。
関連する問題
- 1. プライベートタイプのパブリックエイリアスを作成できるのはなぜですか?
- 2. コンテンツレゾルバを作成できないのはなぜですか
- 3. Chromeで$(ウィンドウ)が動作しないのはなぜですか?
- 4. なぜfirebaseユーザを作成できないのですか
- 5. レポートを作成するときに[レポートデータ]ウィンドウが表示されないのはなぜですか?
- 6. Javaの関数でオブジェクトを作成できないのはなぜですか?
- 7. CentOS 7でDRBDのリソースを作成できないのはなぜですか?
- 8. 複数の子でParentNodeを作成できないのはなぜですか?
- 9. Java8のマップでストリームを作成できないのはなぜですか?
- 10. JavaScriptでこの要素を作成できないのはなぜですか?
- 11. MySQLでテーブルを作成できないのはなぜですか?
- 12. laravelでインデックスを作成できないのはなぜですか?
- 13. VSがカスタムエディタでVSPackageプロジェクトを作成できないのはなぜですか?
- 14. コンソールでAWSラムダ関数を作成できないのはなぜですか?
- 15. SilexでFormViewを作成できないのはなぜですか?
- 16. テキストファイルでファイルマッピングを作成できないのはなぜですか?
- 17. Android StudioでJavaクラスを作成できないのはなぜですか?
- 18. HapiでHEADルートを作成できないのはなぜですか?
- 19. AXで新しいクラスを作成できないのはなぜですか?
- 20. なぜGCCでは `inline static std :: stringstream`を作成できないのですか?
- 21. GoogleコンテナサービスでIngressリソースを作成できないのはなぜですか?
- 22. SilverlightからセカンダリドメインにWebRequestを作成できないのはなぜですか?
- 23. デフォルトのXCodeウィンドウベースのアプリケーションテンプレートは、プログラムでウィンドウを作成しないのはなぜですか?
- 24. なぜXcodeでは、グループは作成できますが、実際のフォルダは作成できませんか?
- 25. スパークストリーミングで「レコード数」ベースのウィンドウを作成できますか?
- 26. 独自のostreamオブジェクトを作成できないのはなぜですか?
- 27. ジェネリック型の配列を作成できないのはなぜですか?
- 28. なぜJavaは内部クラスのインスタンスを作成できないのですか?
- 29. 自分のGlobalIdDTOインスタンスを作成できないのはなぜですか?
- 30. クラスのインスタンスを複数作成できないのはなぜですか?
'HeapDestroy'を呼び出すことで、もう不要なものを即座に解放することができます(オブジェクトを個別に解放するために高価な散歩をするのではなく)という大きな利点があります。または、MSDNの記事(https://msdn.microsoft.com/library/ms810603)によれば、「[...]ヒープメモリの利点の1つは、従来のデータのニーズをどれだけうまく満たすかということですバイナリツリー、リンクリスト、ダイナミックアレイなどの構造体があります。ヒープハンドルを持つことで、これらの構造体を一意に識別することができます。 " –
プライベートヒープが実際のヒープでどのように使用されたかを示す[ここには物語があります](https://blogs.msdn.microsoft.com/ricom/2006/02/02/unmanaged-memory-fragmentation-an-old-story/)世界のシナリオ:スレッドの競合を減らし、断片化を減らす。 –