クラスのユニット プロファイリングを行っているときに、String クラスが際限なく蓄積されていることに気付きました (大規模なアプリでメモリの 90% 以上を消費しています)。幸いなことに、これはFlash Builder 4.6 のプロファイラーモードで実行している場合のみです。デバッグまたは展開 (AIR として) では、組み込みのオンスクリーン メモリ プロファイラ (Mr Doobs Stats) を使用して、メモリ使用量が予想どおりに横ばいになります。
確認するために、テキスト ファイルを継続的にロードする URLLoader であるテスト アプリを作成しました。URLLoaderDataFormat.String を使用してプロファイラ モードで実行すると、文字列データは GC されず、継続的に増加しますが、URLLoaderDataFormat.BINARY を使用すると、データはほぼ即座に GC され、レベルが維持されます。
これをバグと呼ぶのはためらいがあります。これはプロファイラーの動作に必要な部分である可能性があるためです…しかし、これはプロファイラーにとって異常なのでしょうか? これが私の StackOverflow 調査の本質です。
いずれにせよ、これで 2 日間の作業日が無駄になったので、Google で String クラスが狂ったように成長し、GC が取得されない理由を疑問に思っている場合は、Profilier の外でアプリのメモリ使用量を測定して検証することを検討してください。私の場合、Master Strings で何らかの問題が発生したと誤解されました — ただし、Master Strings とそのメモリへの影響 (参照:) を理解することは良いことですが、私のように誤解を招くことはありません。