2009-08-26 2 views
2

IはPNGピクチャが表示され、いくつかの簡単なのMouseEventsを処理する単純なC#2008のアプリケーションを有しています。C#の2K8は、メモリ使用量を減少させる(単純なアプリは10メガバイトを取る)

それは複雑な何もないが、(タスクマネージャに示すように)、それはメモリの少なくとも9.5〜10メガバイトを使用しています

私はすでに、エラーログのいずれかのタイプを無効にしてきただけでなく、私はデバッグおよびトレースのシンボルを削除。 「コードの最適化」が有効になります。

これを軽減する方法はありますか?たぶん、フレームワークのネイティブコンパイルなど、いくつかのオプションを使用して(これも、.NETのために存在するのでしょうか?)

任意のアイデア?それとも、これは.NET Frameworkを持っているために支払うだけの価格ですか?

編集:10メガバイト私は知っている、あまりないです。しかし、一つのサーバ上〜30人のユーザーが存在することを意味している(それが今と呼ばれているとして、またはXenApp)のCitrix Presentation Serverの上で動作するようになるだろう。 30人のユーザー* 10 MB =この小さなアプリケーションの場合のみ300 MB。

事前に感謝し、よろしく何をするにしても

+0

これは*問題*の理由は何ですか?それとも好奇心か? – jalf

答えて

10

は、CLRは、プロセスにロードする必要があります。 10MBはあまりにも多くのメモリではなく、10MBのすべてがプライベートメモリではありません(おそらくほとんどが共有可能です)。ちなみに、単純なアプリケーションが10MB必要な場合は、複雑な(メモリ上の)2倍のメモリを必要とします(基本的にCLRのメモリフットプリントです)。

私は単なるコンソール"リソースモニタ"は、プライベートメモリが約2.5MB、共有可能なメモリが約7MBであることを示しています。

+7

10Mbは現代システムには何もありません。あなたは、オペレーティング・システム、ビデオゲーム、またはRDBMSのようなものを構築している場合を除き、いくつかのKにアプリを保つために必要とする時代は終わりました。 –

+0

@Joel:絶対に。 –

+0

あなたは、ビデオゲームの開発者がメモリ消費を減らすことを意味しますか?私は新しいゲームが512MBのRAMを使用した数年前に衝撃を受けたことを覚えています! –

0

この点に関する.netの問題は、GarbageCollectorによってメモリが管理され、参照されていないオブジェクトが強制的にスペースが足りなくなっています。

ます。また、ここを参照してください、ガベージコレクションをトリガー手動で試すことができます:MSDN

を使用すると、特定の何ができるかは、次のとおりです。

  • 可能性としては減らすように短いオブジェクトへの参照を保つようにしてください使用されているシステムライブラリの数
  • .NETブートストラップを参照してください。
  • ngen.exを使用してアセンブリをプリコンパイルします。 e
  • アセンブラ:-)(ちょうど冗談)