最近在开发中。遇到了内存溢出的问题。。是因为Viewpager 嵌套了多个Fragment的缘故。在优化上进行了处理。。发现效果不是很理想。。基本上APP一运行。直接就到了128M左右。很容易就导致内存溢出了。 后来通过查询。发现一个最简单办法就是人为提高系统可以分配给APP运行的最大内存。
可以在Application 属性下 设置属性:
android:largeHeap="true"
通过打印日志查看APP运行获得内存情况。获取内存情况代码如下。以下是获取代码
int maxMemory = (int) Runtime.getRuntime().maxMemory();//这是获取当前APP已经可以申请到的最大运行内存 ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); int memorySize = activityManager.getMemoryClass();//这是获取当前APP默认情况下的最大运行内存 int newmaxmemorySize=activityManager.getLargeMemoryClass();//这是获取当前APP可以申请到的最大运行内存 Log.d("sunlei","maxMemory------"+maxMemory/1024/1024+"M"); Log.d("sunlei","memorySize------"+memorySize+"M"); Log.d("sunlei","newmaxmemorySize------"+newmaxmemorySize+"M");
测试机型是:红米note4
1、
当未设置此属性情况下:运行效果
11-06 17:56:44.506 4378-4378/com.example.jiana.cutvideoframedemo D/sunlei: maxMemory------128M
11-06 17:56:44.506 4378-4378/com.example.jiana.cutvideoframedemo D/sunlei: memorySize------128M
11-06 17:56:44.506 4378-4378/com.example.jiana.cutvideoframedemo D/sunlei: newmaxmemorySize------512M
2、设置了该属性。运行效果
11-06 17:59:17.000 6880-6880/com.example.jiana.cutvideoframedemo D/sunlei: maxMemory------512M
11-06 17:59:17.000 6880-6880/com.example.jiana.cutvideoframedemo D/sunlei: memorySize------128M
11-06 17:59:17.000 6880-6880/com.example.jiana.cutvideoframedemo D/sunlei: newmaxmemorySize------512M
第一个打印的效果就是 扩充后的可以运行内存。也就导致内部溢出不那么容易。。。很直观。。从128M升级到了512M