システム覚書帳

システム開発、プログラミングについての覚書をメモメモ

2012年03月

[Android]DigitalClockはメモリリークする

長時間動かすアプリを製作中、電源ボタンでスリープ&復帰を繰り返すと、
03-26 12:00:40.524: E/AndroidRuntime(2140): FATAL EXCEPTION: main
03-26 12:00:40.524: E/AndroidRuntime(2140): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
03-26 12:00:40.524: E/AndroidRuntime(2140): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
03-26 12:00:40.524: E/AndroidRuntime(2140): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
03-26 12:00:40.524: E/AndroidRuntime(2140): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
03-26 12:00:40.524: E/AndroidRuntime(2140): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
03-26 12:00:40.524: E/AndroidRuntime(2140): at android.content.res.Resources.loadDrawable(Resources.java:1709)
03-26 12:00:40.524: E/AndroidRuntime(2140): at android.content.res.Resources.getDrawable(Resources.java:581)
03-26 12:00:40.524: E/AndroidRuntime(2140): at android.widget.ImageView.resolveUri(ImageView.java:501)
03-26 12:00:40.524: E/AndroidRuntime(2140): at android.widget.ImageView.setImageResource(ImageView.java:280)


というエラーが出て落っこちてしまった。

ImageView.setImageResource()でXML定義しているリソースを指定しているだけなのに??と不思議に思いつつ調べていくと、イメージファイルの読み込み方法について色々と情報があるが、試してみても一向に改善されない。

仕方なしに、1つずつコードを削りながら、再現するところと再現しないところの境界を見極めていった。

ActivityのonCreate()で
setContentView(R.layout.XXX);
とXML定義をセットするが、これの有無でOOMが出る出ないというところまでこぎつけた。

XMLレイアウト適用でメモリリークなんてありえないと思いつつも、今度はXML定義内の要素を削っていく。。。


DigitalClock を削る。

・・・・ビンゴ


ググると確かにちらほらリークしているような情報あり。
まさかまさかの結末でした。


メモリリークの調査には、
http://andbrowser.com/development/knowhow/289/eclipse-android-memory-leak-mat-oql/
がとても参考になった。

あと、onPause()では、System.gc()を明示的に呼ぶようにするのがよいかもしれない。


[JavaScript]JSONと文字列の変換

IE6,7はうまく動かないらしいけれど、最近のブラウザではよさそう。

var datas = [
{
"id" : 123,
"name" : "John"
},
{
"id" : 124,
"name" : "Bob"
}
];

var json_txt = JSON.stringify(datas);
alert(typeof(json_txt)); // "string"

var json_obj = JSON.parse(json_txt);
alert(typeof(json_obj)); // "object"

プロフィール

tak_bon

カテゴリ別アーカイブ
QRコード
QRコード
  • ライブドアブログ