解决内存溢出的其中一个简单办法。android:largeHeap="true"
2017-11-06 18:00
525 查看
最近在开发中。遇到了内存溢出的问题。。是因为Viewpager 嵌套了多个Fragment的缘故。在优化上进行了处理。。发现效果不是很理想。。基本上APP一运行。直接就到了128M左右。很容易就导致内存溢出了。 后来通过查询。发现一个最简单办法就是人为提高系统可以分配给APP运行的最大内存。
可以在Application 属性下 设置属性:
android:largeHeap="true"
通过打印日志查看APP运行获得内存情况。获取内存情况代码如下。以下是获取代码
测试机型是:红米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
可以在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
相关文章推荐
- 为安卓应用申请更大的内存,android:largeHeap="true"的作用!
- listView 中relativeLayout 布局的 android:layout_alignParentBottom="true" 无效的解决办法
- listView 中relativeLayout 布局的 android:layout_alignParentBottom="true" 无效的解决办法
- 安卓manifest中的android:largeHeap="true"作用
- android:largeHeap="true"的作用
- android:largeHeap="true"的作用
- AndroidManifest.xml中android:largeHeap="true"作用
- android:largeHeap="true"
- "无法找到运行搜索助理需要的一个文件,您可能需要运行安装"的解决办法
- android中关于scrollview内部组件android:layout_height="fill_parent"无效的解决办法
- android中关于scrollview内部组件 android:layout_height="fill_parent"无效的解决办法
- 写了一个查询数据库的程序,不熟的Tomcat6。查询条件为英文时运行正常,为中文时出现乱码。后在tomcap的server.xml中加入useBodyEncodingForURI="true解决了问题
- 创建控件时出错/lm/w3svc/... 不是一个有效的iis应用程序" 的解决办法
- 错误"操作必须使用一个可更新的查询"原因及解决办法
- android的scrollview视图内部的子视图中android:layout_height="fill_parent"无效的解决办法
- myEclipse/eclipse下控制台"DeviceMonitor]Adb connection Error:远程主机强迫关闭了一个现有的连接。"解决办法
- Android"Host is unresolved: api.renren.com:80"异常解决办法
- "Microsoft OLE DB Provider for ODBC Drivers (0x80004005) 操作必须使用一个可更新的查询”错误的解决办法
- 用android做的一个简单的电话拨号器的错误的解决(用android模拟两个人打电话,虽然不能通话)
- asp.net提示"操作必须使用一个可更新的查询"的解决办法