昨日発生していたサイトログインできない不具合は修正されております(詳細はこちら)

深夜のAndroidメモリ管理TL

7
ひょろも @hyoromo

あれ、ヒープサイズの出し方あってるのかな。何で2枚合計サイズが増えてるのに2.2端末だと使用ヒープサイズが減ったんだろう。

2010-11-26 00:51:35
ようてん @youten_redo

@hyoromo なるよー。GCしてもCompaction(デフラグ)ないらしいから空き容量とOOMの因果はとってもおっかけにくい。

2010-11-26 00:55:20
mhidaka@技術書典 @mhidaka

JavaVMが初期値2MBで立ち上がる、そのあと足りなくなったら都度メモリ確保するけどその際にLinux管理部分が断片化してる、はあり得るかも。

2010-11-26 00:56:02
mhidaka@技術書典 @mhidaka

む。自分のためにまとめておこう。

2010-11-26 00:56:46
mhidaka@技術書典 @mhidaka

JavaVMはGCあり。Compactionは未実装、初期ヒープ2MB、最大24MB(標準)まで拡張される。たしかmmapで確保

2010-11-26 00:58:14
ようてん @youten_redo

@mhidaka linux管理側のプロセスヒープはLowMemoryKillerにひっかかりやすくなるだけちゃいますかねー。OOMにはならん気がします。

2010-11-26 00:59:09
こんそめ @consomme72

でかい画像読み込んだ後は強制的にSystem.gcしてるけど邪道なのかしら…

2010-11-26 00:59:28
ひょろも @hyoromo

bitmapデータ作成 → recycleしてnull → またbitmapデータ作成 を合計2MBの画像データでやってるとOOMになってりするのは何でだろう。これも断片化とかなのかしら。

2010-11-26 01:00:33
mhidaka@技術書典 @mhidaka

空きHeap自体はOS管理。取れない時点でOOMKillerが発動。動作中にメモリ不足な雰囲気が出てきたらActivityManagerあたりがLowMemoryKiller発動。

2010-11-26 01:00:37
mhidaka@技術書典 @mhidaka

@youten_redo linux管理側のプロセスヒープも結局mmapで確保してるだけなので、断片化してしまうとVMHeapを拡張するタイミングでOOMじゃないでしょーか?

2010-11-26 01:02:04
ようてん @youten_redo

@mhidaka あれ、ヒープ拡張ってmmapなんですね…最初に24M vmallocとかする…?

2010-11-26 01:06:01
mhidaka@技術書典 @mhidaka

GDDでクリスと話したときはVMHeap?24MBまで使い切れるよ、うん。ってすんなり言われて驚いた記憶あるからなんかテクニックあるはず。

2010-11-26 01:06:52
mhidaka@技術書典 @mhidaka

@youten_redo Dalvikさんは最初に2MBだけ確保してたとおもいます。足りないタイミングで都度確保かと。vmallocだったかは記憶にないれす…。

2010-11-26 01:08:12
ARIYAMA Keiji @keiji_ariyama

@mhidaka 最初から24MB使って、後は自分で管理とかだよ。きっと。。。!

2010-11-26 01:10:08
Takao Sumitomo @cattaka_net

業務系で24時間動作するアプリとか作ったらネックになりそうだなぁ RT @mhidaka JavaVMはGCあり。Compactionは未実装、初期ヒープ2MB、最大24MB(標準)まで拡張される。たしかmmapで確保

2010-11-26 01:11:03
ひょろも @hyoromo

ループさせてみようかなあ

2010-11-26 01:11:33
ARIYAMA Keiji @keiji_ariyama

@mhidaka kMinHeapStartSize (1*1024*1024) これかな。 kMinHeapSize (2*1024*1024)となにがちがうんだろ

2010-11-26 01:15:41
ひょろも @hyoromo

100回くらいbitmap生成→解放を繰り返してみたけど変動はほとんど無いな。俺の組み方が悪いのか...

2010-11-26 01:16:26
mhidaka@技術書典 @mhidaka

メモリ確保はdlmallocまかせっぽいな。

2010-11-26 01:17:34
mhidaka@技術書典 @mhidaka

同じ動作の繰り返しで変動が少ないのは下回りが旨く作られてる証拠みたいです。

2010-11-26 01:18:33
mhidaka@技術書典 @mhidaka

dlmallocってBSD出身だっけ。

2010-11-26 01:19:17