Flex アプリケーションでメモリ リークが発生しています。Flex アプリケーションは、大きな Web アプリケーションの一部です (内部にはあらゆる種類のテクノロジが組み込まれています)。
Flex アプリがサーバーから 5 秒ごとに更新ポーリングを呼び出すと、メモリ リークが発生します。
事実は次のとおりです。
- 接続にはAMFChannelを使用しています。ポーリングは偽です。リフレッシュするたびに、新しいAMFChannelインスタンスが作成されます。
- サーバー側はBlazeDSで、Web アプリケーション内でサーブレットとして実行されます。
- メモリ リークは、IEおよびFireFoxで発生します。Chromeではまったく発生しません。
- 一晩で IE メモリが数百 MB 増加し、最終的にはクラッシュします。
- Flex では、メモリは増加しますが、はるかに遅くなります。一晩で 30MB 増加します。
- Flex プロファイラーを使用すると、増加したメモリがAMFChannelsに関連していることがわかりました。
- AMFChannel requestTimeoutを 60 秒に設定しようとしました。何もしませんでした。
- BlazeDS connect-timeout-secondsを 60 秒に設定しようとしました。何も変わっていません。しかし、私はそれを正しくやったかどうかわかりません。
これまでの私の結論は次のとおりです。
- AMFChannel は、実際にはブラウザーから接続を取得します。Flex では、AMFChannel が消費するメモリはわずかですが、ブラウザではより多くのメモリが消費されます。これは、Flex アプリと IE の間で消費されるメモリの違いを説明しています。
- どういうわけか、AMFChannel はシャットダウンされておらず、ガベージ コレクションも行われていません。
私の要求:
- 私の結論は正しいですか?
- AMFChannel がシャットダウンされ、クリーンアップされていることを確認するにはどうすればよいですか?
- クライアントの接続インスタンスは BlazeDS (サーバー側) によって制御されていますか?
- この問題の調査を続けるのに役立つその他の手がかり
ありがとう