Macromedia Flash非公式テクニカルノート System.pauseForGCIfCollectionImminent()メソッド
説明 ガベージコレクションは、Flash Playerのルートから順にオブジェクトの参照をたどって印(マーク)をつけていきます。そして、すべてのオブジェクトを確かめた後、印のないオブジェクトが占めていたメモリを開放します[*2]。使われているメモリやオブジェクトの数が多いと、ガベージコレクションが費やす時間も増します。そのため、アプリケーションの実行をできるだけ妨げないように、処理は小分けして行われます。 それでも、とくにメモリを開放するときには、アプリケーションを止めてしまうこともあります。すると、アニメーションやサウンドが途切れてしまうかもしれません。System.pauseForGCIfCollectionImminent()メソッドは、ガベージコレクションの実行を促したり抑えたりできます。たとえば、ゲームの真っ最中は実行を抑えて滑らかなアニメーションに徹し、レベルをクリアしたときつぎに備えてメモリを開放すれば、ユーザーは快適なプレイが楽しめるでしょう。 System.pauseForGCIfCollectionImminent()メソッドに渡す引数の切迫度(imminence)はしきい値です。それはガベージコレクションの単なる頻度ではありません。行われる処理がすぐに終わるなら、実行しても差し障りはないでしょう。コレクションに時間がかかりそうなときは、メモリの空き具合によります。空きメモリが少なければ切迫度は高まります。 System.pauseForGCIfCollectionImminent()メソッドに低い切迫度を渡すと、ガベージコレクションは比較的活発に実行され、多くのコレクションが行われます。切迫度を高めると、コレクションがすぐに済む場合でないかぎりアプリケーションを止めません。 空きメモリが増えるかどうかは、切迫度の値とは別です。問題は参照を失ったオブジェクトがどれくらいあるかだからです。大きなデータや大量のオブジェクトの参照を消した後なら、切迫度を低めることによりガベージコレクションが促され、メモリも開放されやすくなります。
参考 作成者: 野中文雄 Copyright © 2001-2011 Fumio Nonaka. All rights reserved. |
||||||||||||||||||||||