`

android GC

 
阅读更多
转自:http://hi.baidu.com/qmiao128/blog/item/69f2fa31d4a5d3b05fdf0ed2.html

GC_FOR_MALLOC means that the GC was triggered because there wasn't enough memory left on the heap to perform an allocation. Might be triggered when new objects are being created.

GC_EXPLICIT means that the garbage collector has been explicitly asked to collect, instead of being triggered by high water marks in the heap. Happens all over the place, but most likely when a thread is being killed or when a binder communication is taken down.

There are a few others as well:

GC_CONCURRENT Triggered when the heap has reached a certain amount of objects to collect.

GC_EXTERNAL_ALLOC means that the the VM is trying to reduce the amount of memory used for collectable objects, to make room for more non-collectable.





typedefenum{
    /* Not enough space for an "ordinary" Object to be allocated. */
    GC_FOR_MALLOC,
    /* Automatic GC triggered by exceeding a heap occupancy threshold. */
    GC_CONCURRENT,
    /* Explicit GC via Runtime.gc(), VMRuntime.gc(), or SIGUSR1. */
    GC_EXPLICIT,
    /* GC to try to reduce heap footprint to allow more non-GC'ed memory. */
    GC_EXTERNAL_ALLOC,
    /* GC to dump heap contents to a file, only used under WITH_HPROF */
    GC_HPROF_DUMP_HEAP
}GcReason;





GC_EXTERNAL_ALLOC freed 297K, 49% free 3411K/6663K, external 24870K/26260K, paused 83ms

前面Free的内存是VM中java使用的内存,external是指VM中通过JNI中Native的类中的malloc分配出的内存,例如Bitmap和一些Cursor都是这么分配的。
在Davilk中,给一个程序分配的内存根据机型厂商的不同,而不同,现在的大部分的是32M了,而在VM内部会把这些内存分成java使用的内存和 Native使用的内存,它们之间是不能共享的,就是说当你的Native内存用完了,现在Java又有空闲的内存,这时Native会重新像VM申请,而不是直接使用java的。
例如上边的例子
free 3411K/6663K和external 24870K/26260K
如果这时需要创建一个2M的Bitmap,Native现有内存26260-24870=1390K<2048k,因此他就会向Vm申请内存,虽然java空闲的内存是
6663-3411=3252>2048,但这部分内存Native是不能使用。
但是你现在去申请2M的Native内存,VM会告诉你无法分配的,因为现在已使用的内存已经接近峰值了32M(26260+6663=32923 ),所以现在就会成force close 报OOM。
所以现在我们要检查我们的native内存的使用情况来避免OOM。

别的资料:http://stackoverflow.com/questions/4525743/what-are-the-paused-values-in-gc-concurrent-log-messages

分享到:
评论

相关推荐

    AndroidGC原理探究UI

    导语想写一篇关于androidGC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC,GCALLOC和...

    Android-GC-Research:Android GC 机制调研

    ##Android GC机制实践调研 ================ 众所周知,java GC 是影响Android应用性能的主要因素之一。完全交给系统管理的GC往往不尽如人意,而开发者却也毫无办法,只能对着GC迎合啊迎合,想着办法把GC哄开心了呗~...

    gc0329_yuv.zip_android_gc0329_gc0329 driver_gc0329 源码

    《深入解析Android GC0329驱动及其源码》 在Android系统中,硬件驱动是连接操作系统与硬件设备的关键桥梁,对于性能优化和系统稳定性起着至关重要的作用。GC0329是一款针对Android智能手机的图像传感器驱动,主要...

    Android有效解决加载大图片时内存溢出的问题

    system.gc(); // 手动触发垃圾回收 } ``` 三、使用 Java 中的内存优化技术 在 Java 中,可以使用一些内存优化技术来减少内存的消耗。例如,可以使用软引用(SoftReference)来缓存图片,从而减少内存的消耗。 四...

    Android内存回收机制

    Android GC原理探究https://www.jianshu.com/p/a7f31aee4e2e lowmemorykiller lowmemorykiller总结:https://www.jianshu.com/p/09922ab0390b oom 按照喜欢有两种情况: OOM(Out Of Memory) : Android内存管理机制...

    gc2035_yuv.zip_android_gc2035_gc2035 linux

    标题中的"gc2035_yuv.zip_android_gc2035_gc2035_linux"暗示了这个压缩包文件是关于GC2035摄像头驱动的,特别针对Android智能手机,并且与Linux操作系统有关。GC2035是一款常见的图像传感器,常用于手机、监控摄像头...

    Android垃圾回收机制及程序优化System.gc

    在Android开发中,理解垃圾回收(Garbage Collection, GC)机制和如何进行程序优化至关重要,因为这直接影响到应用的性能和用户体验。Java语言内置的垃圾回收机制是自动管理内存的关键特性,它负责清理不再使用的...

    gc0309_yuv.zip_GC0308_android

    标题中的"gc0309_yuv.zip_GC0308_android"暗示了这是一个与Android智能手机相关的驱动程序,特别是针对MTK(MediaTek)芯片的图形处理部分。GC0308可能是摄像头传感器的型号,而gc0309可能指的是与其配合使用的图形...

    gc5035_mipi_raw.rar

    《GC5035 MIPI RAW驱动在MTK平台Android 10.0上的实现与应用》 在当今的智能手机领域,图像传感器扮演着至关重要的角色。GC5035是一款广泛应用的CMOS图像传感器,尤其适用于摄像头模组。这款传感器以其高性价比和...

    Bu2-Camera调试总结全志.pdf

    文档的标签“Camera android gc0308”指的是文档中可能包含与Android操作系统、Camera模块以及型号为gc0308的相机传感器相关的信息。下面是根据文档提供的部分内容,整理出的详细知识点。 1. 调试Camera的目的: -...

    三星Galaxy EK-GC 100 android智能照相机的logcat

    即使打开开发者选项,允许调试等,在三星Galaxy EK-GC 100 android智能照相机上,仍然不能使用IDE的logcat,更不要想使用断点调试了,还好有这个apk来在相机上记录,不然要改bug,可得累死啊。更多关于调试三星...

    gc0310 mipi 驱动

    【标题】"gc0310 mipi 驱动"是针对Android 4.4系统,基于MediaTek MT6572平台的一款摄像头驱动程序。MIP(Mobile Industry Processor Interface)I是移动设备中广泛使用的高速接口,主要用于连接摄像头传感器和其他...

    gc0310 前置摄像头驱动

    总之,gc0310前置摄像头驱动是连接高通msm8909平台硬件与Android系统的关键组件,涉及到了硬件接口、内核编程、设备树配置、以及Android相机框架等多个方面的技术知识。通过理解和调试这个驱动,开发者可以深入理解...

    gc2145 mipi 驱动

    《GC2145 MIPI驱动详解:在MTK Android 4.4系统中的应用与配置》 在Android操作系统中,驱动程序是连接硬件设备与操作系统内核的关键桥梁,它们负责管理和优化硬件资源,使软件应用程序能够充分利用硬件功能。本文...

    gc回收机制

    Java垃圾收集(Garbage Collection,简称GC)是Java编程中一个重要的特性,它负责自动管理内存,自动回收不再使用的对象,以避免程序员手动进行内存管理,防止内存泄漏。GC回收机制是Java虚拟机(JVM)的核心组成...

    GC2155 CSP DataSheet release V1.1.1.pdf

    GC2155 CSP是一款由GalaxyCore Inc.生产的1/5’’ UXGA(Ultra Extended Graphics Array)CMOS图像传感器。UXGA是一种分辨率标准,它提供1600x1200像素的分辨率,这在高清晰度成像应用中非常常见,如监控摄像头、...

    gc2145_bpi_a64_android验证完成_改全部的ov5640为gc2145_20170524_1113没有外层目录.7z

    R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\configs\camera.cfg ;------------------------------------------------------------------------------- ; 用于camera的配置 ; ; 采用格式:...

    PL2303GC USB to Full UART Bridge Controller with GPIO.pdf

    PL2303GC提供了一种方便的小型解决方案,用于将类似RS232的全双工异步串行设备连接到任何USB主机。 Prolific提供了高度兼容的驱动程序,该驱动程序可以在大多数操作系统上模拟传统的COM端口,从而允许基于COM端口的...

Global site tag (gtag.js) - Google Analytics