私はインタラクティブなチャートを作成するプログラムに取り組んでいます。ただし、プログラムのレンダリングレイヤーが無効になっていても、次の問題が発生します。C#、なぜGCは毎秒何回も動作していますか?
Visual Studio 2015診断ツールによれば、GCは1秒間に約4回連続して実行され、アプリケーションのパフォーマンスが120fpsから15fpsに低下します。
予期しない割り当てが予想されるメモリスナップショットをいくつか取りましたが、スナップショットによれば、問題が発生しても数秒ごとにSystem.Internal.HandleCollector + HandleTypeの割り当てとコレクションが1〜は発生していません。
私が気づいたいくつかの他のもの:
これは、複数のマシンで起こる- 。
- これは、デバッガが接続されているかどうかに関係なく発生します。
- アプリケーションのCPU時間の大部分は、clr.dllにあります。
- スナップショットに観測可能な割り当てがない場合でも、各GCの実行理由は「スモールオブジェクトヒープ アロケーション」としてリストされています。
この時点で私は困惑しています。誰かがこれを見るか、どこでデバッグを開始すべきか知っていますか?
あなたはグラフを生成するために何を使用していますか? GDI +?あなたはデータの変更や絶え間なくグラフィックを更新していますか? –
私たちはSharpDX経由でDirectXを使用します。グラフは一度生成され、ユーザーの入力に基づいて変更され、フレームごとに描画されます。しかし、レンダリングレイヤーが完全に削除されても、この問題は引き続き発生します。 –
Visual Studioに割り当てがないときに割り当てのためにGCをどのようにデバッグするのですか? "明確な問題文"を持たず、 "他の読者には役に立たない" –