- 浏览: 1062690 次
- 性别:
- 来自: 南昌
文章分类
- 全部博客 (276)
- 生活 (1)
- 代码之美 (22)
- Media (7)
- Android Widget (3)
- Android Intent (1)
- Android Activity (4)
- UI event handle--UI事件处理机制 (2)
- Java基础知识 (12)
- android Databases (5)
- Android 系统知识 (70)
- 平常遇到的问题与解决方法 (38)
- Android TextView/EditView (2)
- Thinking Java (1)
- android webkit (6)
- JSON (1)
- XML (4)
- HTTP (1)
- Google Weather API (1)
- android 2.3 NFC (10)
- android app (20)
- android framework (7)
- C++ (2)
- android System (5)
- Pthread (1)
- Wifi (8)
- Unix/Linux C (8)
- Android 4.0 (1)
- Mail (1)
- Smack 源码学习 (4)
- iOS (4)
- Android (1)
- git (1)
- Gallery3d (2)
- React-Natice (1)
最新评论
-
dd18349182956:
你是用的smack哪个版本?我用的smack4.1.3和sma ...
关于socket长连接的心跳包 -
xukaiyin:
全英文
getApplicationContext()与this,getBaseContext() -
裂风矢:
...
<category android:name="android.intent.category.DEFAULT" /> 惹的祸 -
xanthodont:
mark一下
XMPP——Smack -
Evilover3:
mark一下,学习了
XMPP——Smack
转自: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
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
发表评论
-
打印调用堆栈
2019-11-15 15:48 467平常我们遇到不清楚代码逻辑的,可以通过打印调用堆栈来理清楚,如 ... -
你知道Log.isLoggable
2018-11-23 14:15 933我们可以通过Log.isLoggable来动态开关log的输出 ... -
android:allowUndo
2018-04-25 16:51 773Android 在Android 23增加了UndoManag ... -
mipmap-xxx
2015-12-10 11:35 1094最近在看AOSP,发现mipmaps, 百度 了一下,发现有各 ... -
《Android.Programming.Pushing.the.Limits].Erik.Hellman》记录1
2015-10-29 10:56 573最近在看《Android.Programming.Pushin ... -
System.currentTimeMillis() uptimeMillis elapsedRealtime 区别
2015-10-28 20:02 1301转自http://blog.csdn.net/wutianyi ... -
GPS的开关设置
2015-09-29 18:36 2021//modify by hyxu 2015-9-30 to s ... -
DialogFragment
2015-09-25 13:56 1036public class YesNoDialog extend ... -
ANDROID L——RecyclerView,CardView导入和使用
2015-07-23 09:51 946转自http://blog.csdn.net/a3969019 ... -
IntentService 和ResultReceiver
2015-07-22 20:00 805转自[url] http://javatechig.com/a ... -
Android media媒体库分析之:分类别统计媒体文件大小
2015-07-21 20:07 544转自http://www.linuxidc.com/Linux ... -
java.lang.IllegalArgumentException: Service Intent must be explicit
2015-07-21 20:03 1301转自:http://www.2cto.com/kf/20150 ... -
Context 和Application Context
2015-02-11 15:14 877http://possiblemobile.com/2013/ ... -
ContentProviderOperation.Builder 中withValue和withValueBackReference的区别
2015-02-10 14:01 2193关于ContentProviderOperation.Buil ... -
AndroidManifest.xml的Service元素 android:process设置
2013-05-30 17:02 11479转自:http://galin.blog.sohu ... -
android中打包含有Activity以及资源文件的jar包在工程中调用
2013-05-28 15:00 1313转自:http://www.cnblogs.com/vaiya ... -
Android杂谈--内存泄露(1)--contentView缓存使用与ListView优化
2012-11-01 09:29 2824转自:http://www.cnblogs.com/louli ... -
Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
2012-10-31 14:32 1881转自:http://www.eoeandroid.com/th ... -
Animation
2012-10-30 13:41 1125转自:http://hi.baidu.com/wendaoer ... -
Android onTouchEvent和onInterceptTouchEvent
2012-10-24 15:05 1282ViewGroup里的onInterceptTouchEven ...
相关推荐
导语想写一篇关于androidGC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC,GCALLOC和...
##Android GC机制实践调研 ================ 众所周知,java GC 是影响Android应用性能的主要因素之一。完全交给系统管理的GC往往不尽如人意,而开发者却也毫无办法,只能对着GC迎合啊迎合,想着办法把GC哄开心了呗~...
《深入解析Android GC0329驱动及其源码》 在Android系统中,硬件驱动是连接操作系统与硬件设备的关键桥梁,对于性能优化和系统稳定性起着至关重要的作用。GC0329是一款针对Android智能手机的图像传感器驱动,主要...
system.gc(); // 手动触发垃圾回收 } ``` 三、使用 Java 中的内存优化技术 在 Java 中,可以使用一些内存优化技术来减少内存的消耗。例如,可以使用软引用(SoftReference)来缓存图片,从而减少内存的消耗。 四...
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摄像头驱动的,特别针对Android智能手机,并且与Linux操作系统有关。GC2035是一款常见的图像传感器,常用于手机、监控摄像头...
在Android开发中,理解垃圾回收(Garbage Collection, GC)机制和如何进行程序优化至关重要,因为这直接影响到应用的性能和用户体验。Java语言内置的垃圾回收机制是自动管理内存的关键特性,它负责清理不再使用的...
标题中的"gc0309_yuv.zip_GC0308_android"暗示了这是一个与Android智能手机相关的驱动程序,特别是针对MTK(MediaTek)芯片的图形处理部分。GC0308可能是摄像头传感器的型号,而gc0309可能指的是与其配合使用的图形...
《GC5035 MIPI RAW驱动在MTK平台Android 10.0上的实现与应用》 在当今的智能手机领域,图像传感器扮演着至关重要的角色。GC5035是一款广泛应用的CMOS图像传感器,尤其适用于摄像头模组。这款传感器以其高性价比和...
文档的标签“Camera android gc0308”指的是文档中可能包含与Android操作系统、Camera模块以及型号为gc0308的相机传感器相关的信息。下面是根据文档提供的部分内容,整理出的详细知识点。 1. 调试Camera的目的: -...
即使打开开发者选项,允许调试等,在三星Galaxy EK-GC 100 android智能照相机上,仍然不能使用IDE的logcat,更不要想使用断点调试了,还好有这个apk来在相机上记录,不然要改bug,可得累死啊。更多关于调试三星...
【标题】"gc0310 mipi 驱动"是针对Android 4.4系统,基于MediaTek MT6572平台的一款摄像头驱动程序。MIP(Mobile Industry Processor Interface)I是移动设备中广泛使用的高速接口,主要用于连接摄像头传感器和其他...
总之,gc0310前置摄像头驱动是连接高通msm8909平台硬件与Android系统的关键组件,涉及到了硬件接口、内核编程、设备树配置、以及Android相机框架等多个方面的技术知识。通过理解和调试这个驱动,开发者可以深入理解...
《GC2145 MIPI驱动详解:在MTK Android 4.4系统中的应用与配置》 在Android操作系统中,驱动程序是连接硬件设备与操作系统内核的关键桥梁,它们负责管理和优化硬件资源,使软件应用程序能够充分利用硬件功能。本文...
Java垃圾收集(Garbage Collection,简称GC)是Java编程中一个重要的特性,它负责自动管理内存,自动回收不再使用的对象,以避免程序员手动进行内存管理,防止内存泄漏。GC回收机制是Java虚拟机(JVM)的核心组成...
GC2155 CSP是一款由GalaxyCore Inc.生产的1/5’’ UXGA(Ultra Extended Graphics Array)CMOS图像传感器。UXGA是一种分辨率标准,它提供1600x1200像素的分辨率,这在高清晰度成像应用中非常常见,如监控摄像头、...
R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\configs\camera.cfg ;------------------------------------------------------------------------------- ; 用于camera的配置 ; ; 采用格式:...
PL2303GC提供了一种方便的小型解决方案,用于将类似RS232的全双工异步串行设备连接到任何USB主机。 Prolific提供了高度兼容的驱动程序,该驱动程序可以在大多数操作系统上模拟传统的COM端口,从而允许基于COM端口的...