獲取安卓應用程式的記憶體限制
阿新 • • 發佈:2019-02-15
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);
}
}