1. 程式人生 > >獲取安卓應用程式的記憶體限制

獲取安卓應用程式的記憶體限制

        int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
        Log.d("TAG", "Max memory is " + maxMemory + "KB");
        Log.d("TAG", "Max memory is " + (maxMemory / 1024) + "MB");
adb -s 192.168.3.104:5555 shell su -c cat /system/build.prop|findstr.exe heapgrowthlimit
adb -s 192.168
.3.104:5555 shell "su -c cat /system/build.prop|grep heapgrowthlimit"
機型 記憶體空間 當個可用
OPPO finder 1GB ram 64MB
Kindle hd7 1GB ram 64MB
Moto x 2GB ram 96MB
HTC U11 4GB ram 256MB

軟體在最前面的時候可以分配更多

超出限制會報

AndroidRuntime: FATAL EXCEPTION: main   
                                                            java.lang
.OutOfMemoryError

低記憶體的手機跑下面這個軟體可能會OOM,應採用類似執行緒池一樣的方式

public class MainActivity extends AppCompatActivity {

    private int[] piclist = {R.mipmap.img,
            R.mipmap.img_1,
            R.mipmap.img_2,
            R.mipmap.img_3,
            R.mipmap.img_4,
            R.mipmap.img
    };

    ImageView imageView1;
    ImageView imageView2;
    ImageView imageView3;
    private
Random random = new Random(); final Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView1=(ImageView)findViewById(R.id.image1); imageView2=(ImageView)findViewById(R.id.image2); imageView3=(ImageView)findViewById(R.id.image3); //記憶體限制 int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " + maxMemory + "KB"); Log.d("TAG", "Max memory is " + (maxMemory / 1024) + "MB"); setTitle((maxMemory / 1024) + "MB"); handler.postDelayed(new Runnable() { @Override public void run() { imageView1.setImageResource(piclist[random.nextInt(piclist.length)]); imageView2.setImageResource(piclist[random.nextInt(piclist.length)]); imageView3.setImageResource(piclist[random.nextInt(piclist.length)]); handler.postDelayed(this,5); } }, 3000); } }