おはようございます。 sadakです。 この連休中はアプリ開発をやらないと思っていましたが ちょっとクラッシュレポートが来たんです。 内容は「OutOfMemotyError」です。 数か月前にBitmapの読み込み後に bitmap.recycle() をするよう修正していたんですが どうもまだ検出されるということは 他のインスタンス(ImageViewなど)にBitmapが残っていたりするのかも。。 で、一つ一つつぶすのは時間がかかるということで 新版 OutOfMemoryErrorを知る from Masahiro Hidaka この目からウロコのスライドを参考に Androidのヒープサイズをあげてみました。 左がlargeheap適用前、右がlargeheap適用後です。 NormalMemorySize は largeheap適用前の最大メモリ(たぶん) LargeMemorySize は largeheap適用後の最大メモリ(たぶん) スライド14Pに記載されているコードの値です。 たしかに largeheap適用後は 最大ヒープメモリが増えていますね。 ちなみにこのダイアログは こんなコードです。(あっているかな。。) リビルディング・サガで 戦闘を行うと、画像読み込みがたくさん発生するので メモリが増えます。 ちょっと、戦闘前と戦闘後でメモリを確認してみました。 メモリが必要となったので TotalとUsedが増えていますね。戦闘を何度か繰り返すと メモリが下がっているときがあり、これはGCが走ったんではないかと 予想しています。すごくメモリリークが発生している!というわけではなさそう。。 さきほどのスライドをみたんですが コンカレントGCになっているようなので フルGCによる完全フリーズ!みたいなことが 起きにくくなっているようですね……。 開発中にしばしばアプリ画面が固まったことがあって 「さてはフルGCが走っているな……こいつめ!」 と思っていたんですが、そんなことは発生しないようでした。 (なんであのとき固まっていたんだろう……??) まぁ、とりあえず OutOfMemotyErrorが走っている