`
天天向上1989
  • 浏览: 412550 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

【转】 关于Android堆内存的设置

阅读更多

转自 http://www.cnblogs.com/jacktu/archive/2010/12/30/1921475.html

 

 

VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION);
VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE);
以上两种方法,对内存溢出问题并没有实质帮助。
 

堆(HEAP)是VM中占用内存最多的部分,通常是动态分配的。堆的大小不是一成不变的,通常有一个分配机制来控制它的大小。比如【下列都是假设数据】初始的HEAP是4M大,当4M的空间被占用超过75%的时候,重新分配堆为8M大;当8M被占用超过75%,分配堆为16M大。倒过来,当16M的堆利用不足30%的时候,缩减它的大小为8M大。重新设置堆的大小,尤其是压缩,一般会涉及到内存的拷贝,所以变更堆的大小对效率有不良影响。

 

Max Heap Size,是堆内存的上限值,Android的缺省值是16M(某些机型是24M),对于普通应用这是不能改的。函数setMinimumHeapSize其实只是改变了堆的下限值,它可以防止过于频繁的堆内存分配,当设置最小堆内存大小超过上限值时仍然采用堆的上限值,对于内存不足没什么作用。

分享到:
评论

相关推荐

    android内存分析工具集锦

    主要从5个模块入手: 1 java的GC机制以及Android最大堆内存分配 2 Monitors 3 DDMS/Traceview 4 Mat 5 LeakCanary 6 开发中要注意的点。

    Android-HeapSnap是一款针对Android进程堆内存泄露追踪工具

    HeapSnap 是一款针对Android进程堆内存进行追踪、定位,以便查出泄露位置的工具

    android内存分析

    Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java堆内分配空间;然而对象的释放是由垃圾回收器来完成的。C/C++中的内存机制是“谁污染,谁...

    android内存的溢出和泄漏问题

    android 的内存溢出和泄露问题.  内存溢出就是分配的内存不足以放下数据项序列。如在一个域中输入的数据超过了它的要求就会引发数据溢出问题,多余的数据就可以作为指令在计算机上运行。  内存泄漏是指在堆上分配...

    java内存模型的介绍和说明

    介绍java的内存管理方式和特点 1.JMM 简介 2.堆和栈 3.本机内存 4.防止内存泄漏

    android内存监测之procmem

    【android内存监测之procmem】 Android系统中提供了两个命令行工具procrank、procmem用于查看系统中的内存使用情况。这两个工具对于我们... • procmem可以针对某个特定的进程分析其堆、栈、共享库等内存占用情况。

    浅谈Android应用的内存优化及Handler的内存泄漏问题

    Java里会将这块空间分成Stack栈内存和Heap堆内存。stack里存放对象的引用,heap里存放实际对象数据。 在程序运行中会创建对象,如果未合理管理内存,比如不及时回收无效空间就会造成内存泄露,严重的话可能导致使用...

    Android 内存溢出和内存泄漏的问题

    Android 内存溢出和内存泄漏的问题 在面试中,经常有面试官会问“你知道什么是内存溢出?什么是内存泄漏?怎么避免?”通过这篇文章,你可以回答出来了。 内存溢出 (OOM)是指程序在申请内存时,没有足够的内存空间...

    android procmem查看内存使用

    procmem 给出了procrank中VSS、RSS、PSS、USS的每一部分组成,包括进程可执行程序本身、共享库、堆、栈的内存占用。这里的信息应该是从/proc/pid/maps文件中获取的.

    Android内存泄露分析.pptx

    在android开发中,jvm具有自动回收的机制,会不定时不定期的去清理无用的被占用的内存,而在理论上不需要再被使用的内存,在实际中却还持有对这一块内存的引用,导致GC时,不会被回收释放掉,这部分内存就会随着程序...

    Android内存泄露总结(附内存检测工具)

    主要是分三块:静态储存区:编译时就分配好,在程序整个运行期间都存在。它主要存放静态数据和常量。栈区:当方法执行时,会在...在堆内存中频繁的new/delete会造成大量内存碎片,使程序效率降低。对于非静态变量的储存

    内存基础知识总结

    对于内存基础知识的总结,包含内存寻址、linux内核内存管理、androidHeap堆管理方式、内存泄露测试等

    android内存及内存溢出分析详解

    一、Android的内存机制 Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java堆内分配空间;然而对象的释放是由垃圾回收器来完成的。C/C++中的...

    Android编程内存溢出与防范方法浅析

     Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M。但是Android采用的是Java语言编写,所以在很大程度上,Android的内存机制等同于Java的内存机制,在刚开始开发的时候,内存的限制问题会给我们带来...

    RxCache:适用于Java和Android的本地React式缓存。 现在,它支持堆内存,堆外内存和磁盘缓存

    目前支持内存、堆外内存、磁盘缓存。 功能特点: 支持二级缓存:Memory、Persistence 各个缓存可以拥有有效时间,超过时间缓存会过期 Memory 默认支持 FIFO、LRU、LFU 算法的实现 Memory 额外支持 Guava Cache、...

    Android性能优化系列之内存优化

    在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(GarbageCollection,GC)完成的,程序员不需要通过调用函数来释放内存,但也随之带来了内存泄漏的可能,上篇博客,我介绍了Android性能优化系列之...

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    开源的Android性能测试工具APT

    支持进程内存构成分析 支持手工或超过阈值时自动转储 Dump 详细堆内存对象信息 支持多进程 支持生成和导出常用格式的的日志图表 APT相比同类工具 具有下面2大特性: 使用Java语言开发 基于Eclipse 跨平台 支持...

    Android常见的几种内存泄漏小结

    在Android程序开发中,当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了。...

    Android面试(一)Java虚拟机内存结构分析

    JVM堆:所有线程共享的运行时内存区域,是GC回收的主场所,Java堆保存Java的实例对象,从内存回收对象的存活来分析,堆又可以分为新生代、老年代。 方法区:方法区是线程共享的运行时内存区域,存储虚拟机加载的类的...

Global site tag (gtag.js) - Google Analytics