2013年1月12日土曜日

android memory

メモリを見ると100Mとか200Mとか余っててもバカスカ落ちる端末がいます。

この場合、アプリが100MBとか、そういう責任ではないのです。

 

androidのアプリにheapと言うのがあるようで

下は24MBで上が70MBですが、

この値を超えると強制終了するようです。

 

つまり、カンタンに言うと、自分の端末のスペックがいい人は、このheap問題に気づかないと言う事です。

galaxy sは記載されてないですが、結構heapサイズがでかいみたいで、検証の時には問題なかったのにHTCで急に落ちる事が何が問題かわかりませんでした。

 

以前の端末では16MBくらいだったらしいので、バージョンを1.6くらいからに設定したい人には、その値を目安にする方がいいかもしれません。

 

マニフェストのapplicationにandroid:largeHeap="true"と書くとheapのサイズが128MBになるみたいですが、android3.1とかからの技のようで、現段階(2012年5月)ではちょっと使えない技になります。※9割以上が2.1~2.3

 

バグを残さず制作するにはheapが、「24MB」の端末が必要です。

と言う事になります。最新の注意を払っても、出る時には出るout of errorです。

 

これでも16MBの端末があればエラーが出ますが。。

 

で、この部分に関しては、「エラーは出るものである。」

と言う結論をつけたいです。out of memory根絶は、よほど潤沢な検証環境がないかぎり厳しいです。

ユーザーの「落ちました。最悪です。」と言うコメントを享受しましょう。

 

で、出てしまった場合です。ここでは、メモリリークはないものとします。純粋にメモリの使用量が大きなページの場合

androidにユーザーのエラーのレポートが来るので、エラーの発生箇所の特定をしたら、

その部分や周辺にSystem.gc();を仕込みます。

メモリリークしてないのであれば、使ってる最中から、片付けをしていく感じにはなりますが、

これで、ある程度は改善できるかと思います。

または、使っている画像サイズを小さくしたり、bitmapの読み込み設定をしたり。


0 件のコメント:

コメントを投稿