2011-06-23 10 views
1

私はWPFを使用してConwayのGame of Lifeのシミュレータを開発しています。プログラムのメモリが多すぎます

何らかの理由で、プログラムが400,000Kまでのメモリを消費することがあります。

メモリ使用量を減らしたり、メモリ使用量を減らすにはどうしたらいいですか?

編集1: メインウィンドウコード: http://pastebin.com/mz0z7tBu

グリッドクラス: http://pastebin.com/ZHX1WBuK

セル構造体:

struct Cell 
{ 
    public int Neighbors {get; set;} 
    public bool Alive { get; set; } 
} 

編集2: 私がしようとするでしょうプログラムの構造を説明する: Cellは、Type intのAutoPropertyネイバーとType boolのAutoProperty IsAliveを含む構造体です。

CellGridは、Cellの2D配列をラップするクラスです。 各CellのNeighborsプロパティが更新されて、Neighborsの数が生き残るように更新され、各CellのIsAliveがtrueまたはfalseに設定されます。近隣の数と以前のIsAliveの状態に依存します。

MainWindowクラスには、CellGrid型のオブジェクトがあります。 グリッドを画面にレンダリングします。

編集3:

XAML:http://pastebin.com/Zp3dr8zc

resources.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Style TargetType="{x:Type MenuItem}"> 
     <Setter Property="HorizontalContentAlignment" Value="Center" /> 
     <Setter Property="VerticalContentAlignment" Value="Center" /> 
     <Setter Property="MaxHeight" Value="32" /> 
    </Style> 
    <Style TargetType="{x:Type MenuItem}" x:Key="ParentMenuItem"> 
     <Setter Property="Width" Value="46" /> 
    </Style> 
</ResourceDictionary> 
+4

誰もがコードを見ずにガイダンスを提供することは難しいでしょう。 – bronsoja

+0

どのように世代間のタイミングを制御しますか? – DXM

+0

描画コードまたはセルコード? @DMXタイミングはありません。世代はボタンのクリックで渡されます。 –

答えて

4

これはDrawingContextでは/のDrawingVisualを使用した結果です。実際には問題はなく、システムは必要に応じてすべてをガベージコレクションする必要がありますが、メモリ使用量は警告になる可能性があります。代わりにキャンバスに図形を描くのであれば、おそらくこの問題は見えません。私は過去にカスタム描画されたコントロールでこの同じ問題にぶつかってきました。より多くのベクトルベースの描画技術(キャンバス上の図形)に切り替えると、メモリ消費の問題が修正されました。

+0

ありがとうございました。あなたはキャンバスの使用のための学習ソースを持っていますか? –

+1

これらは複雑なものですが、私のプロジェクトWPFSVLにはこの例があります(http://wpfsvl.codeplex.com)。 DrawingContextとDrawinVisualで高速レンダリングを行うために使用されていたスペクトラムアナライザコントロールは、代わりにシェイプを使用するように変更しました。私がしたとき、私はあなたのような状況を見た。それはMBのメモリのhundresを "占有する"ために使用されましたが、今ではアプリケーション全体が30 MBのようになります。 – JacobJ

+0

比較のため、ここでもDrawingVisualを使用していた古いソースコードがあります:http://inchoatethoughts.com/a-wpf-spectrum-analyzer-for-audio-visualization – JacobJ

関連する問題