管理対象外オブジェクトのAdd/RemoveMemoryPressureを使用する正しい方法は何ですか?私は管理されていないオブジェクトを持っていますが、例えばSTLコンテナを多用しています。アンマネージドオブジェクトの合計サイズが変更されるたびに、マネージドGCを常に更新するはずですか?それとも、生の割り当てサイズですか?そしていつRemoveMemoryPressureを呼び出すのですか?ファイナライザ? Dispose()? hereからGC.AddMemoryPressure for unmanaged objects
6
A
答えて
2
(及び@Wimクーネンにより指摘):最も単純な利用パターンに
、 管理オブジェクトは、コンストラクタにアンマネージ メモリを割り当てと解放は廃棄それを またはメソッドをファイナライズ。 アンマネージメモリを割り当てた後にAddMemoryPressureメソッド を呼び出し、解放後にRemoveMemoryPressure メソッドを呼び出します。管理対象オブジェクトの 寿命の間、実質的に アンマネージメモリの割り当て 変化、あなたは が にAddMemoryPressureと RemoveMemoryPressureメソッドを呼び出すことができ、より複雑なシナリオでは、
は、これらの増分変更を伝える ランタイムへ。
これらの変更を追跡するためにどれくらいの努力を払うべきか、どれだけの利益が得られるかを決める必要があります。
+0
はい - ネイティブオブジェクトのデフォルトアロケータを変更して、すべての割り当てをマスターオブジェクトに通知し、管理対象コードのDispose()オブジェクトを使用して、すべての管理対象メソッドのGCを自動的に更新しました。 – Puppy
関連する問題
- 1. CoreData Model Objects for API
- 2. C# "Unmanaged Exports"
- 3. UNMANAGED C++のSystem.Data.SQLite
- 4. Git Merge from Unmanaged Project
- 5. Javascript:sorting objects
- 6. Java MultiThreading objects
- 7. 処理 - mouseOver on objects
- 8. mvc question、interactive objects
- 9. javascript "polymorphic callable objects"
- 10. XNA 4.0 Glowing objects
- 11. cocos2d moving objects
- 12. Prototype Element.update multiple objects
- 13. Unity3D Objectsポジショニング
- 14. xmlNode to objects
- 15. Business Objectsエラー
- 16. SAP Business Objects
- 17. mongoengine cross objects links
- 18. Java Reflection、Class Objects
- 19. scala copy objects
- 20. Ember.js 'Objects'と 'ArrayController'
- 21. コアデータ:NSPredicate with managed objects
- 22. クアエール - 誰でもまだ使っていますか? (LINQ to Objects for Java)
- 23. Shared Objects for Windows Formsアプリケーションのようなものはありますか?
- 24. Python Dictionaries vs Javascript Objects
- 25. GroupByとLinq with Objects
- 26. GC.AddMemoryPressureとアンマネージドリソースを使用するポイントは何ですか?
- 27. javascript inside titanium studio: 'new' in objects
- 28. SAP Business ObjectsのカスタムJDBCドライバ
- 29. jacksonデシリアライゼーションjson to java-objects
- 30. スタティッククラスとBusiness Objects COMライブラリ
ガベージコレクタがアンマネージオブジェクトをどのように収集すると思いますか? – dtb
@dtb:[GC.AddMemoryPressure](http://msdn.microsoft.com/en-us/library/system.gc.addmemorypressure.aspx)は、管理対象オブジェクトが存在し、管理されていないメモリのxバイトを割り当てたままにしていることをランタイムに通知します(例えば、COMオブジェクトへの参照を有することによって)。これにより、ガベージコレクタはデッドオブジェクトを探してファイナライザを実行し、プロセス内の管理されていないメモリを解放することができます。 –
@dtb:所有している管理オブジェクトを収集します。 – Puppy