ComboBox のドロップダウンリストを表示するとメモリリーク…
Monday, 20. July 2009, 16:21:54
17回、業務を繰り返すと Internet Explorer + Flash Player がハングアップする。
その時の OS 全体の空きメモリ使用容量がほぼ 0MB になる。
そんな申告を受けました。端から見ていると抱腹絶倒もの、自分自身のことになると人生を失った気分になる不具合、「メモリリーク」です。
手元の環境で試してみると、1回の業務(表示画面→編集画面→確認画面→完了画面)で、Internet Explorer のメモリ使用量が 40MB~50MB 増えてました。
編集画面・確認画面は、1つの Flex モジュールになっていて、ViewStack で画面を切り替えています。表示画面・完了画面はこれまた1つの Flex モジュールになっていて、完了画面は表示画面と同じで、上部に完了メッセージが表示されるだけが異なっています。
Flex プロファイラで見てみると、編集画面・確認画面の Flex モジュールが、完了画面に遷移した後でも解放されないという現象が起こっていました。業務を繰り返した分だけ、編集画面・確認画面の Flex モジュールのインスタンス数が単調増加…。
しかし、編集画面表示直後に画面上にある「前画面へ戻る」ボタンで表示画面に戻ると、編集画面・確認画面の Flex モジュールが解放されることを発見。解放される画面遷移から手順を1手ずつ変えていってメモリリークする手順を探っていくと、「ComboBox のドロップダウンリストを表示させた」段階でメモリリーク発見。
・・・
なんじゃそりゃぁー!!
「Flex ComboBox メモリリーク」でググって SDK-18268 を発見。SDK-18268 の方はパッチ適用済みだからそれとは別問題…。「Flex ComboBox memory leak」でググって SDK-19030 を発見。さらに、Flex SDK 3.3 でビルドし直して、メモリリークが発生する画面遷移を行い、メモリリークが解消されていることを確認。ここに達するまで1週間。
ということで、SDK-19030 が原因でしょう、と方式Gなる人に報告して終了。
・・・しませんでした。つづきはまた今度。
-
SDK-18268 Repeating addChild(DataGrid) and removeChild doesn't free memory the DataGrid is referenced(clicked) -- DataGrid を Click するとメモリリークするという話。Flex User Group で、ComboBox も影響するという話がされていました。
-
SDK-19030 ComboBox Memory Leak after change the selection of dropdownlist by mouse -- ComboBox を Click するとメモリリークするという話。


How to use Quote function: