每个程序都很大的内存可以使用,在使用前,你要明白你真的需要这么多的内存吗?在3.0以后程序就有largeHeap选项,如果为true,程序可以使用256M(我的设备)可以通过ActivityManager.getMemoryClass(()获取,为false 程序可使用内存为64(我的设备),可以通过getMoryClass()获取,在网上找了些资料:
–G1: 16MB
–Droid: 24MB
– Nexus One: 32MB
– Xoom: 48MB
我的的设备是:tab 2,获取的是64M,但在使用时遇到下面错误:
也就是说只有30M可以使用。具体是什么原因我没有再研究。
内存分配原则:刚开始系统会给你程序分配上限是已经使用的内存的一倍左右,当不够用时慢慢调整上限,当超过一定的使用量时,会大幅度调整上限,我在测试时,在64以下调整很小,当使用量超过64M时,系统把内存上限调直接整到了100M以上。前提是在设置 Honeycomb adds “largeHeap” 选项后
3.0以前GC操作需要很长时间,以常大于100ms,在执行GC时,程序就会出现卡的现象,3.0以后GC执行的时间通常在5ms以内,在以3.0以前的版本中,加载图片时,系统把bitmaps加载到Native中,并不受GCt管理,需要手机释放,不然会遇到莫名奇妙的内存问题。3.0以后Bitmaps直接放到内存中在执行GC时,会及时清理无用的Bitmaps所占的内存,在初始化图片时把图片放到内存中,当加载完后,系统会把图片从内存转移到显存中,当你用内存测试工具时,会发现,在加载图片时,内存占用率很高,当加载完成后,内存使用量突然下来,当加载大量图片时会发现这种情况。我测试内存工具是:Mat,下载:http://eclipse.org/mat/
分享到:
相关推荐
- HPROF文件:通过生成和分析HPROF文件,可以查看内存分配和GC情况。 7. **及时释放资源**: - 在不再需要时关闭Cursor、Socket、文件流等资源。 - 注销BroadcastReceiver、Adapter和Loader。 8. **避免内存...
总结起来,Android内存管理的核心知识点包括:并发垃圾回收(GC_CONCURRENT)、堆大小限制和申请、大堆内存的使用与性能影响,以及内存泄漏的检测和分析方法。开发者在编写应用时,应当有意识地管理内存使用,避免...
总之,Android内存优化涉及多个层面,包括正确管理对象生命周期、减少不必要的内存分配、合理使用内存池、避免内存泄漏等。通过深入理解和实践这些原则,开发者可以创建出更高效、更稳定的Android应用。
为了实现最佳性能,开发者需要根据应用的具体需求和目标设备的配置,合理调整内存分配策略,并利用各种性能分析工具(如Android Profiler)进行测试和调试,找出内存消耗高的地方,针对性地进行优化。此外,遵循最佳...
可以通过设置堆内存大小和优化 Dalvik 虚拟机的堆内存分配来避免内存溢出问题。但是,这种方法需要注意项目 build target 不能高于 2.2 版本。 解决 Android 中的内存溢出问题需要从多方面入手,包括优化图片加载、...
在Android开发中,内存管理是至关重要的,尤其是处理大图片时,可能会引发内存溢出(Out Of Memory,简称OOM)问题...通过优化图片加载策略、管理Bitmap引用以及适当地调整内存分配,可以显著提升应用的性能和稳定性。
Android获取当前应用分配的最大内存和目前使用内存的方法 Android获取当前应用分配的最大内存和目前使用内存的方法是Android开发中非常重要的一部分。今天,我们将分享获取当前应用分配的最大内存和目前使用内存的...
3. 优化Dalvik虚拟机堆内存分配:通过调整`-Xmx`参数设置最大堆内存大小,根据应用需求合理分配。 4. 自定义堆内存大小:在AndroidManifest.xml中,通过`android:largeHeap="true"`属性可以让应用申请更大的堆内存...
Android系统允许开发者通过在manifest的application标签中添加largeHeap="true"来请求更大的内存分配。但这并不意味着所有应用都应该这么做。大型heap可能导致更频繁的垃圾回收(GC),降低系统性能,尤其是在任务...
10. **系统级别的配置**:调整AndroidManifest.xml中的`android:largeHeap`属性,允许应用分配更大的堆内存,但这并不是解决OOM的根本方法,可能造成设备卡顿。 在"TestAsyncImageLoaderImageView"这个场景下,我们...