2012-01-25 5 views
0

私は多くのリアルタイムデータを消費するアプリケーションを持っています。それは非常にやっているので、VS 2010ではかなり遅く、さまざまな方法で失敗します。C#/ .NETアプリケーションでメモリの各タイプに割り当てられたメモリの内訳を取得する方法はありますか?

このプロファイラ以外にも、メモリ内の各メモリにどのくらいの量のメモリが割り当てられているかを知ることができますか?

それはとても私自身のカウンタを追加することは非常に大規模なアプリケーションだが...あなたはメモリプロファイラを使用する必要が

+1

[CLRProfiler](http://www.microsoft.com/downloads/en-us/details.aspx?id=16273)または別のメモリプロファイラを使用してください。 –

+0

ありがとう、私は同時GCを持っていたので、私はそれを削除し、私はCLRプロファイラを使用して、私は他のいくつかを試しましたが、私はあまりにも多くのパフォーマンスヒット(私はそれらを構成する方法)メモリがダンプされている間、物事への接続が失われています。CLRプロファイラは最高のようですね、ありがとう! – user555265

答えて

0

ありGetBytesUsedForInstance(object)を言うのは簡単な汎用の方法はありませんが、それはあなたが必要なもの依存dat a(すべての型が値型でない場合は、比較的単純にする必要があります)。

私たちのアプリケーションの一部にメモリキャッシュがあります。使用されるメモリの相対的な量についてはほとんど気になります。つまり、合計キャッシュサイズは昨日の2倍です。このために、オブジェクトグラフをストリームにシリアル化し、ストリームの長さを取ってからストリームを破棄します。これはではなく、の「正確な測定値で、あるタイプのメモリがどれだけ使用されたか」という正確な測定値ですが、で、これらの相対比較に役立ちます。

それ以外は - 私はあなたがプロファイラを使用して立ち往生していると思います。私は非常にお勧めしますSciTech Memory Profiler - 私はそれをたくさん使用します。それはVisual Studioにうまく統合され、高速(最新バージョンはとにかく)であり、非常に有用な詳細を提供します。

+0

VSとうまく行くなら、私はSciTechも試してみるよ! – user555265

0

私は一般的な情報を得るためにお勧めします大量に使用Process Explorer。 一度詳細を理解する必要がある場合(たとえば、ヒープ上のオブジェクトの種類など)、JetBrains Memory and Performance profilerです。これはただ支払われます。

あなただけのパフォーマンスプロファイラが必要な場合は、本当に良い無料オプションEquatec Performance profiler

幸運があります。

+0

優れたフリーパフォーマンスプロファイラの知っておきたいこと、歓声! – user555265