我们知道android 中每个app的内存占用,简单分为两块:dalvik heap和native heap。
native heap 是C/C++代码占用内存,而dalvik heap则是java代码占用内存。
而android系统对每个app内存分配(java 占用)有大小限制,每个操作系统及在不同手机厂商中设置此值均有不同。
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
int size = activityManager.getMemoryClass();
这个值单位为MB,从16开始,比如vivo x7 plus 此值为256M。mi4为128M。
如果app启动后,系统并非立刻分配如此大的内存,而是根据实际需要。如果app本身占用内存小,则os分配的内存较小,如50M等。
如果app启动后,已占用内存+需要再分配内存 大于上面这个值。则会出现oom问题。
同一个图片,在不同手机上同样方式加载,可能占用内存是不同的。可能还有较大的差距。