C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: コントロールのインスタンスのメモリ使用量


(過去ログ 131 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■77747 / inTopicNo.1)  コントロールのインスタンスのメモリ使用量
  
□投稿者/ メモリ節約し隊 (5回)-(2015/11/19(Thu) 22:55:44)

分類:[C#] 

Windows7以降のOS C# .NetFramework4.0 クラスライブラリに関する質問です。

プロセスをタスクマネージャで監視していたところ、他のプロセスよりも消費メモリが高いプロセスを見つけたので改善しようと思います。
プロセスはフォームに画像データをもったコントロールが多数あるので、それが原因だと思われます。

しかし、どのコントロールが原因なのかを知る方法がわかりません。そこでコントロールのインスタンスのメモリ使用量を測定したいと思います。

よく知っているメモリの計測方法があるのですが、Controlはシリアル化できないものなので今回は使用することができません。
このような場合はどうすればよいのでしょうか。

引用返信 編集キー/
■77803 / inTopicNo.2)  Re[1]: コントロールのインスタンスのメモリ使用量
□投稿者/ メモリ節約し隊 (6回)-(2015/11/23(Mon) 20:27:21)

こちらがよく知ってるシリアル化されたクラスのサイズを測る方法です。
http://d.hatena.ne.jp/Asarima/20050228/p1
しかし、上記のとおり今回はこの方法を使用することができません。

画像データをもったコントロールが多数あるのでこのままではどのオブジェクトが肥大しているのかが正確に特定できません。
フォームクラスから各Control等でのオブジェクトのサイズを計測したいのですがどうすればよいでしょうか。
引用返信 編集キー/
■77805 / inTopicNo.3)  Re[1]: コントロールのインスタンスのメモリ使用量
□投稿者/ Azulean (547回)-(2015/11/23(Mon) 20:45:36)
No77747 (メモリ節約し隊 さん) に返信
> プロセスをタスクマネージャで監視していたところ、他のプロセスよりも消費メモリが高いプロセスを見つけたので改善しようと思います。
> プロセスはフォームに画像データをもったコントロールが多数あるので、それが原因だと思われます。
> しかし、どのコントロールが原因なのかを知る方法がわかりません。そこでコントロールのインスタンスのメモリ使用量を測定したいと思います。

画像(Bitmap)がメモリ消費の大半であるという見方が正しいのであれば、正直なところ、インスタンスのメモリを調べたところで、見極めは難しいと思います。
なぜなら、多くのメモリプロファイラにおいて、Bitmap オブジェクトが実際に消費しているメモリ量を表せないためです。
(マネージメモリ以外の消費があることが理由)

よって、かんたんな調査方法はありません。
あなたのアプリがどのような性質を持つか、設計によるかで対応方法が変わると思いますが、これは現状と経験でなんとか切り分けていく部分であり、助言が難しいものです。
(コメントがつかない理由はそのあたりにあると思います)
引用返信 編集キー/
■77808 / inTopicNo.4)  Re[2]: コントロールのインスタンスのメモリ使用量
□投稿者/ メモリ節約し隊 (7回)-(2015/11/23(Mon) 22:31:56)

> かんたんな調査方法はありません。

なるほど。ありがとうございます。メモリ削減には皆様苦労されているようですね。
簡単な問題ではないということがわかっただけでもよかったです。そこは大事なところですから。
インスタンスのメモリ量を調べてもアンマネージメモリコードは調べられないということですね。

私もWebであちこち調べてみましたが、直接的な解決方法はありませんでした。
別フォームにコントロールをコピペ張り付けたりして動かしながらタスクマネージャで監視して比較するしかなさそうですね。
回答ありがとうございました。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -