2013年9月30日月曜日

AndroidのlargeHeap(オレと皆さま調べ)

手持ちの端末+αでlargeHeap有効時のヒープサイズを調べてみました。

結果

まずは結果から。
こんな感じ。

[2016/06/03 3機種追加]
今回の追加分は@_postNogenoraさんに情報提供いただいたNexus 6/SBM104SHと
手持ちのSC-05G。
ありがとうございます!

MODEL API Level getMemoryClass() getLargeMemoryClass() ご協力
Nexus
Nexus 6 23 256MB 512MB @_postNogenoraさん
Nexus 10 17 192MB 512MB オレ
Nexus 7(2013) 18 192MB 512MB @kimukou2628さん
Nexus 7(2012) 18 64MB 384MB オレ
Nexus 5 19 192MB 512MB オレ
Nexus 4 18 192MB 512MB オレ
Galaxy Nexus 17 96MB 256MB オレ
Nexus S 16 48MB 128MB オレ
docomo
SC-05G 23 256MB 512MB オレ
F-05F 19 192MB 512MB @wakuimasashiさん
SH-04F 19 128MB 384MB @wakuimasashiさん
SH-05F 17 128MB 384MB @wakuimasashiさん
SO-04E 16 128MB 384MB オレ
SO-03E 16 128MB 384MB オレ
SO-02E 16 128MB 384MB オレ
SH-04E 16 64MB 256MB オレ
F-10D 15 72MB 256MB オレ
SO-05D 15 64MB 256MB オレ
SO-03D 15 64MB 256MB オレ
N-02E 15 64MB 256MB @takkeさん
SC-06D 15 64MB 256MB @kimukou2628さん
SO-01F 17 192MB 512MB オレ
F-01F 17 128MB 384MB オレ
SC-01F 18 128MB 512MB オレ
L-01F 17 128MB 256MB オレ
F-07E 17 128MB 384MB オレ
L-05E 17 96MB 256MB オレ
SH-07E 17 64MB 256MB オレ
N-06E 17 128MB 384MB オレ
SH-06E 17 128MB 384MB オレ
SC-04E 17 128MB 512MB オレ
HW-03E 16 256MB 256MB オレ
L-04E 16 128MB 256MB オレ
dtab01 16 256MB 256MB オレ
P-02E 16 128MB 384MB オレ
F-03E 15 72MB 256MB オレ
SH-02E 15 64MB 256MB オレ
HW-01E 15 128MB 256MB オレ
SO-01E 16 64MB 256MB オレ
SH-01E 15 54MB 160MB オレ
P-08D 15 48MB 256MB オレ
SH-10D 15 64MB 256MB オレ
F-11D 15 84MB 128MB オレ
L-06D 15 70MB 256MB オレ
T-02D 15 72MB 256MB オレ
N-07D 15 64MB 256MB オレ
L-05D 15 64MB 256MB オレ
SH-09D 15 64MB 256MB オレ
F-09D 15 72MB 128MB オレ
SH-07D 15 48MB 128MB オレ
SC-05D 15 64MB 256MB オレ
au
SOL25 19 143MB 463MB @wakuimasashiさん
SCL23 19 128MB 512MB @wakuimasashiさん
SOL23 17 192MB 512MB オレ
SCL22 18 128MB 512MB オレ
SHL22 17 64MB 256MB オレ
KYY21 17 96MB 256MB オレ
HTL22 16 192MB 384MB オレ
SOL22 17 192MB 512MB @hikaru__mさん
SOL22 16 128MB 384MB オレ
HTL21 16 128MB 256MB @takkeさん
SCL21 15 64MB 256MB オレ
FJL21 15 72MB 256MB オレ
IS17SH 15 54MB 160MB オレ
ISW16SH 15 64MB 256MB オレ
IS15SH 15 54MB 160MB オレ
ISW13HT 15 48MB 128MB オレ
IS12S 15 64MB 256MB @takkeさん
IS11LG 15 64MB 64MB オレ
ISW11SC 15 64MB 256MB オレ
ISW11F 15 72MB 256MB オレ
URBANO PROGRESSO 15 64MB 256MB オレ
SoftBank
SBM107SH 15 64MB 256MB オレ
SBM104SH 15 64MB 256MB @_postNogenoraさん

IS11LGはlargeHeap有効時もヒープサイズは増えないようです。
IS11LGだけなのか、他にも同様の端末があるのか分かりませんがリファレンスをみると

ActivityManager | Android Developers http://developer.android.com/reference/android/app/ActivityManager.html#getLargeMemoryClass()

This may be the same size as getMemoryClass() on memory constrained devices
とあるので、許容動作の模様。

コード

検証用のコードは、こんな感じ。
package com.tytosoft.largeheapchecker;

import android.app.Activity;
import android.app.ActivityManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
        String info = "MODEL : " + Build.MODEL + "\n"
                + "API Level : " + Build.VERSION.SDK_INT + "\n"
                + "getMemoryClass() : " + activityManager.getMemoryClass() + "MB\n"
                + "getLargeMemoryClass() : " + activityManager.getLargeMemoryClass() + "MB";

        TextView textView = (TextView) findViewById(R.id.textview);
        textView.setText(info);
    }

}

getMemoryClass() : largeHeap無効時のヒープサイズ
getLargeMemoryClass() : largeHeap有効時のヒープサイズ
だと思っている。

アプリ

検証に使ったアプリをGoogle Playにアップしてみました。

Get it on Google Play

largeHeapはAPI Level 11から使えますが、3.xタブレットはもう考慮しなくて良いと思っているのでminSdkVersionは14としています。

お手持ちの端末で動かしたスクリーンショットなどをこちらまで送っていただければ、上記の表に追加したり、しなかったりします。

0 件のコメント:

コメントを投稿