Skip navigation.

Error Log

最近電車ばっかり…

July 2009

( Monthly archive )

ComboBox のドロップダウンリストを表示するとメモリリーク… のつづき

,

Flex の ComboBox のメモリリーク話のつづきです。

方式G なる人に SDK-19030 の話をして「肩の荷が下りたぁ」と思っていたところ、その人から

おまえんとこ、SDK-18268 のパッチ当たってないんじゃね??


という回答をもらいました。なんでも、
  • 方式Gの環境では、はじめは再現しなかった
  • もしやと思って SDK-18268 のパッチを外して再度試したら、再現した
ということらしい。

・・・
えええっ!!

自分たちのビルド手順を調べた結果、SDK-18268 のパッチ、あたってませんでした orz。

自分たち業務G は、方式G から「フレームワーク」として Flex ライブラリをもらい、その上で開発をしています。この開発スタイルにおいて「SDK-18268 のパッチをあてる」というのは、

  1. Flex SDK の lib ディレクトリに SDK_18268_PATCH2.swc を追加する。
  2. Flex プロジェクトのビルドパスに、フレームワークの「Flex ライブラリ プロジェクト」を追加する。
  3. フレームワークもろとも、Flex プロジェクトをビルドする。
というやり方か、

  1. デフォルトの Flex SDK を利用する。
  2. Flex プロジェクトに、方式G が配布しているフレームワークの .swc をコピーし、ビルドパスに加える。
  3. Flex プロジェクトをビルドする。
というやり方のいずれかの手順を指していたのでした。

  1. デフォルトの Flex SDK を利用する。
  2. Flex プロジェクトのビルドパスに、フレームワークの Flex ライブラリ「プロジェクト」を追加する。
  3. フレームワークもろとも、Flex プロジェクトをビルドする。
という手順では、SDK-18268 のパッチなんてあたる訳ない、というオチ。

方式G が配布しているフレームワークの .swc を使うようにビルド手順を直して、編集画面・確認画面の Flex モジュールのインスタンスが解放されることを確認。

SDK-19030 って、SDK-18268 と重複だったんですねぇ。。。
だから「Flex SDK 3.3 では解消されているから Close して」なんて会話がされていたんでしょうか。。

というのはおいといて、方式Gの人に「お騒がせしました。ごめんなさい」といって終了。
・・・しないんですねぇ、これが。

ComboBox のドロップダウンリストを表示するとメモリリーク…

,

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なる人に報告して終了。
・・・しませんでした。つづきはまた今度。

January 2010
M T W T F S S
December 2009February 2010
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31