2016-08-24 12 views
0

コンパクトなフレームワーク2とvb.netコードを実行しているWindows Mobileアプリケーションを使用しています。私は決められた時間ごとにアプリケーションを同期させる必要があるので、system.threading.timerを使用して、各同期プロセスにあらかじめ定義されたタイマーを設定します。コンパクトなフレームワーク2.0でのメモリリークのデバッグ

問題は1つです。私のメモリは速く構築されており、24 MBに達し、OutOfMemoryExceptionのためにアプリがクラッシュします。

私は、コンパクトなフレームワークのGCは良くないと理解していました.2MBのgcヒープしか持っていませんでした。私は4MBのシンクを使い、gcは2MBしかクリーニングしません。

私はコンパクトなフレームワーク2.0のビルドのパフォーマンスモニタツールを使用しようとしましたが、「まだ生きている」オブジェクトを私に提供しただけで、クリーニングされたり、処理されたりしません。アプリ。

Compact Framework 2.0でメモリリークを監視する効率的な方法はありますか? 問題の原因となっている方法やコードのどの部分に問題があるのか​​を教えてくれる人はいますか?

これとは逆に、32MBの空きRAM容量しか持たないため、効率的な方法で私のメモリを管理するための便利な方法があります。

+0

私の考えからは、オブジェクトを割り当てるときにメモリリークが発生し、使用後に解放しないでください(DisposeとNullに設定)。私は疑わしい各機能の前後にメモリ状態をダンプします。その後、メモリを解放しない関数に移動し、解放されていないオブジェクトを探します。そのオブジェクトへの参照がプロセス内に存在する限り、オブジェクトは自動的に処理されません。 – josef

+0

[Compact Framework Power Toys](https://www.microsoft.com/en-us/download/details.aspx?id=13442)のNETCF CLR Profilerをご覧ください。各オブジェクトの数が表示されます作成されるメソッドとオブジェクトを作成するメソッド。 – bit2know

答えて

1

この問題は実際のメモリリークに関連すると私は懐疑的です。

デバイスを接続してデバッグセッションを開始し、スタックトレース&のVisual Studioでのスレッドドロップダウン数を監視します。私はあなたが古いものを廃棄せずにあまりにも多くのスレッドを回転させていると思われる、またはあなたのスタックトレースを大きくしている関数やサブルーチンへの循環呼び出しを持っている - あなたが取得する前にメモリを使い果たした小さなデバイススタックオーバーフロー

0

アプリケーション用に作成した内部データベースを使用してしまったため、XMLファイルを処理するクライアントが300を超えるため、純粋にXML文書での作業は賢明ではないという結論に達しました。 私たちは19,000行のXMLファイルを解析する必要がありましたが、これは私たちが使用するプラットフォームを考えるとばかげていました。私たちは24MBのスペースしか使用できません。

内部アプリケーションビジネスとDALロジックを処理する内部DBを作成しました。

こうすることで、巨大なXMLファイルを扱う必要がなくなり、パフォーマンスの問題を回避することができます。

関連する問題