android堆内存
Ⅰ android为什么要内存优化
android为什么要内存优化是为了防止Android的内存溢出
Android的内存溢出是如何发生的?
Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M,有的机器为24M。因此所能利用的内存空间是有限的。如果内存占用超过了一定的水平就会出现OutOfMemory的错误。
为什么会出现内存不够用的情况呢?原因主要有两个:由于程序的失误,长期保持某些资源(如Context)的引用,造成内存泄露,资源造成得不到释放。
保存了多个耗用内存过大的对象(如Bitmap),造成内存超出限制。
在android的开发中,要时刻主要内存的分配和垃圾回收,因为系统为每一个dalvik虚拟机分配的内存是有限的,在google的G1中,分配的最大堆大小只有16M,后来的机器一般都为24M,实在是少的可怜。这样就需要在开发过程中要时刻注意。不要因为自己的代码问题而造成OOM错误。
Android的优化方式
Android的程序由java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java堆内分配空间;然而对象的释放是由垃圾回收器来完成的。C/C++中的内存机制是“谁污染,谁治理”,java的就比较人性化了,给我们请了一个专门的清洁工(GC)。
那么GC怎么能够确认某一个对象是不是已经被废弃了呢?Java采用了有向图的原理。Java将引用关系考虑为图的有向边,有向边从引用者指向引用对象。线程对象可以作为有向图的起始顶点,该图就是从起始顶点开始的一棵树,根顶点可以到达的对象都是有效对象,GC不会回收这些对象。如果某个对象 (连通子图)与这个根顶点不可达(注意,该图为有向图),那么认为这个(这些)对象不再被引用,可以被GC回收
Ⅱ Android 为什么用久了内存占用越来越多
因为安卓系统的优化不是那么好,在长期运行中会逐渐产生很多的垃圾和缓存,特别是运行内存。物亏有时哪怕把所有后来下载的应用程序都卸载了,发现也不会变得快。
给几个建议:
1,买安卓系统的手机,选择运行内存和存储内存大的。
2,定期使用手机管家或者360卫士清理手机,特别是qq和微信。
3,不要下载过多的、不常用的软件,以免占用过多的内存。
4,过一段手机将手机重携启启,可以优化,释放一定的内存辩蚂如,手机运行也会更好。