1

私の基本的な質問:メモリ リークが System.totalMemory によって報告されないことがありますか?


更新: パフォーマンスの問題の原因が完全に検証されたことはありませんでしたが、ターゲット システムで簡単に測定できなかった GPU/CPU の問題 (@divillysausages の仮説による) に関係している可能性があります。この質問をした日のうちに奇妙で古典的な奇妙なバグが発生し、問題は解決されたようです。この Q&A の目的上、System.totalMemory は正確に報告されていると言っても過言ではないと思います。


バックグラウンド:3 つのフルスクリーン Adob​​e Air 3 アプリを開発しています。これら 3 つのアプリと 3 つの VLC プレーヤーは、マルチスクリーンの Windows 7 マシンで常に実行されています。各 AIR アプリは、6 つの 1080p 画面のいずれかで全画面表示されます。AIR アプリは、Robotlegs 1.5.2 (Lazy Mediation を使用)、AS3 Signals (Relaxed Signals を使用)、および共通の側面 (ロガー、ローダー、基本 UI、スケジューリング サービス、構成パーサー) を実装する独自のボイラープレート シェルを使用します。シェルのストレステストを入念に行ってきましたが、良さそうです。3 つのアプリはすべて、一定の間隔 (約 5 分) でデータを読み込み、ビューを更新します。また、自動化されたストレス テストでは、ローダーとパーサーが、更新が集中している場合でもメモリ セーフであることを示しています。初期化後に作成されるオブジェクトはほとんどありません。

問題:ターゲット システムで数時間実行した後、アニメーションの重いモジュールのレンダリング レートが低下します。

この問題は明らかに階層化されていますが、私は Flash Builder プロファイラーと Mr Doobs Stats ツールを使用してプロファイリングを行っているので、少し不満です。FB プロファイラの文字列に関する私の他の質問を参照してください)。アニメーションを多用するアプリを起動すると、すぐにメモリ使用量のレベルに達し、アニメーションのパフォーマンスは依然として良好ですが、数時間後に再度チェックすると、アニメーションが途切れ途切れになり、不規則になり、アプリの UI が遅く応答しなくなります。他の 2 つのアプリ (低フレーム レートで実行されており、アニメーションはありません) はかなり良いように見えますが、それぞれ同じくらい多くのメモリを消費します。アニメーション アプリを再起動すると問題が解決します。

さらにコンテキスト:

  • アニメーションを多用するアプリは、アニメーション化されているかどうかに応じて、stage.frameRate を 15 から 40 の間で調整します。ある種のデータ処理の大洪水の最中にアニメーションが開始したいという競合状態を防ぎ始めました...一定のフレームを使用することを検討していますが、それはロングショットのようです

  • アニメーションに Greensock の TweenMax を使用し、最初にメモリ リークを発見しました (これは私自身の不適切な実装のケースです)。

  • 新しいオブジェクト (基本的に、イベント リスナーを持たず、値が上書きされることが多い値オブジェクト) の作成はほとんどありません — 表示オブジェクトが周期的に作成/破棄されることはありません

  • 可能な限りイベントの代わりにシグナルとコールバックを使用する

  • Timer オブジェクトを可能な限り共有および再利用し、数秒のタイミングでそれらをより多く使用することにより、最小量の Timer インスタンス (5 ~ 6)

  • renderMode "auto" Adob​​e AIR の使用: メイン ウィンドウのプロパティ— Windows 7 マシンに展開するためにこれを変更する必要があるかどうかわからない

4

2 に答える 2

1

途切れ途切れのアニメーションは、フレームレート、または cpu/gpu がブロックされているため、レンダリングに問題があるように聞こえます。これは、メモリに問題がない場合でも発生する可能性があります。

モノクルを介してアプリを実行してみると、グラフィック パフォーマンスとバックグラウンドで何が起こっているかを確認できます: https://prerelease.adobe.com/callout/?callid=59A4F95D908A4D2FB9F302729FD0D87F

于 2012-11-15T16:07:54.863 に答える
0

私は職場で同様のアプリを構築しました。ネイティブ実行可能ファイルとして 24 時間年中無休で実行され、Twitter のデータと画像を読み込みます。私はフレームワークを使用しませんでしたが、それは問題ではないと思います。

私は実際にあなたの反対を見つけました.私のアプリはWindowsで完全に動作し、OSXで途切れ始めます.

開発コンピューターだけでなく、ディスプレイ コンピューターでテストを実行していますか? ムービーをクリックしたときにのみ表示される単純な RAM 計算機を作成しました。これは、本番環境でデバッグを行っていたときに役立ちました。

于 2012-11-15T15:03:05.323 に答える