- 399 名前:357 mailto:sage [2008/07/09(水) 22:44:49 ]
- 今さらですが、取り合えずはなんとかは出来ましたのでご報告致します。
エミュや実機の動作の差分を見ていたところ、 703SHではゲーム用インナーのコンストラクタに入るところで急激に増えていました。 このクラスのメンバには一番多く変数が定義されており、 コピーコンストラクタで変数を大量に生成した後には703SHでは増えている感じでした (エミュ・905SH・813SHでは約900KBに対し703SHでは約2MB)。 コンストラクタに入ったときにGCを呼んでも解放されなかったため、 new byte[Runtime.getRuntime().freeMemory()] を2回呼ぶことで空きメモリが必要である事を主張し解放を促しました。 これにより前記の領域を解放させることが出来ました。 タイミングによってはOutOfMemoryErrorが出るので、安全策として、 ここの部分でのみErrorをcatchしています。 Errorの性質上、かなり気持ち悪い実装となりましたが、 現状ではこの方法で回避するとこが出来ました。
|

|