android 通知垃圾回收,Android中垃圾回收日志信息
原因
GC_CONCURRENTfreed 178K, 41% free 3673K/6151K, external 0K/0K, paused 2ms+2ms
GC_EXPLICITfreed 6K, 41% free 3667K/6151K, external 0K/0K, paused 29ms
红颜色标出的部分就是垃圾回收触发的原因。在Android中有五种类型的垃圾回收触发原因。
GC_CONCURRENT当堆内存增长到一定程度时会触发。此时触发可以对堆中的没有用的对象及时进行回收,腾出空间供新的对象申请,避免进行不必要的增大堆内存的操作。
GC_EXPLICIT当程序中调用System.gc()方法触发。这个方法应避免出现在程序中调用。因为JVM有足够的能力来控制垃圾回收。
GC_EXTERNAL_MALLOC当Bitmap和NIO Direct ByteBuffer对象分配外部存储(机器内存,非Dalvik堆内存)触发。这个日志只有在2.3之前存在,从2.3系统开始,垃圾回收进行了调整,前面的对象都会存储到Dalivik堆内存中。所以在2.3系统之后,你就再也不会看到这种信息了。
GC_FOR_MALLOC当堆内存已满,系统需要更多内存的时候触发。这条日志出现后意味着JVM要暂停你的程序进行垃圾回收操作。
GC_HPROF_DUMP_HEAP当创建一个内存分析文件HPROF时触发。
结果
GC_CONCURRENTfreed 178K, 41% free 3673K/6151K, external 0K/0K, paused 2ms+2ms
GC_EXPLICITfreed 6K, 41% free 3667K/6151K, external 0K/0K, paused 29ms
这部分数据告诉我们JVM进行垃圾回收释放了多少空间。
堆内存数据
GC_CONCURRENT freed 178K,41% free 3673K/6151K, external 0K/0K, paused 2ms+2ms
GC_EXPLICIT freed 6K,41% free 3667K/6151K, external 0K/0K, paused 29ms
这部分告诉我们堆内存中可用内存占的比例,当前活跃的对象总的空间,以及当前堆的总大小。所以这里的数据就是41%的堆内存可用,已经使用了3673K,总的堆内存大小为6151K。
外部存储数据
GC_EXTERNAL_ALLOC freed 1125K, 47% free 6310K/11847K,external 1051K/1103K, paused 46ms
GC_EXTERNAL_ALLOC freed 295K, 47% free 6335K/11847K,external 1613K/1651K, paused 41ms
这部分数据告诉我们外部存储(位于机器内存)对象的数据。在2.3之前,bitmap对象存放在机器内存。因此在第一条数据中我们可以看到以有1051K使用,外部存储为1103K。
上面两行数据相差100毫秒,我们可以看到第一条数据表明外部存储快满了,由于GC_EXTERNAL_ALLOC被触发,外部存储空间扩大到了1651K。
垃圾回收暂停时间
GC_CONCURRENT freed 178K, 41% free 3673K/6151K, external 0K/0K,paused 2ms+2ms
GC_EXPLICIT freed 6K, 41% free 3667K/6151K, external 0K/0K,paused 29ms
这部分数据表明垃圾回收消耗的时间。在GC_CONCURRENT回收时,你会发现两个暂停时间。一个是在回收开始的暂停时间,另一个时在回收结束的暂停时间。GC_CONCURRENT从2.3开始引入,相比之前的程序全部暂停的垃圾回收机制,它的暂停时间要小的多。一般少于5毫秒。因为GC_CONCURRENT的绝大多数操作在一个单独的线程中进行。
android 通知垃圾回收,Android中垃圾回收日志信息相关推荐
- java 什么时候进行垃圾回收_Java中垃圾回收有什么目的?什么时候进行垃圾回收?...
仅提供一个大致的思路: 垃圾回收(gc)的目的是释放堆中不需要保存的对象,达到内存的充分利用. 1.回收哪些对象的判定 垃圾回收最简单的思路是采用引用计数的方式,即记录对象被引用的次数,直到一段时间内 ...
- xamarin android 通知,在 Xamarin.Android 中使用 Notification.Builder 构建通知
0 背景 在 Android 4.0 以后,系统支持一种更先进的 Notification.Builder 类来发送通知.但 Xamarin 文档含糊其辞,多方搜索无果,遂决定自己摸索. 之前的代码: ...
- android 通知灯 测试,Android灯光系统通知灯【转】
标签: 一.通知灯应用程序的编写 1.首先实现一个按钮功能 xmlns:tools="http://schemas.android.com/tools" android:layou ...
- android 通知显示时间,android:在特定时间显示通知?
我有一个名为的函数show_notification(),当用户点击按钮时我会调用它.关键是,一旦他点击[如下面的函数],我不想显示通知,我想在特定的time= hours:mins 地方显示此通知. ...
- android 通知打开app,Android打开通知栏并回到主页的几种方式
用PendingIntent.getActivity创建通知栏 在MainActivity中增加点击事件,用来启动NotifyService和延迟2秒销毁MainActivity,如下面代码所示 In ...
- android 通知id,java – Android:获取唯一的通知ID
我相信你不应该一次就给用户那么多的通知.您应该显示一个整合关于Gmail客户端事件组的信息的单个通知.为此目的使用Notification.Builder. NotificationCompat.Bu ...
- android 通知图标大小,android – 通知栏显示大图标和小图标
我的应用程序中的通知栏仅显示自动收报机中的小图标(应该如此).但是,当"阴影"被拉下时,它会显示自动收报机中的小图标,以及我在Notification.Builder中设置的大图标 ...
- android 通知多行,Android多行通知,例如Gmail应用
我正在尝试创建一个多行通知,如Gmail应用程序所示,如下图所示(5个通知分组在一个通知下) 我尝试了各种示例,但似乎只能创建单个通知 public void createSingleNotifica ...
- ormlite android jar,android使用orm框架ormlite在控制台打印log日志信息
在默认情况下,在android下默认只打印info级别的日志信息,所以在默认情况只能打印ormlite中创建数据库表的语句,而对于数据的插入和查询等sql语句是不会打印出来的.在ormlite中提供了 ...
最新文章
- Unet实现图像分割(四)
- Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略
- hdu 4640(状压dp)
- 百练OJ:4151:电影节
- java程序设计实例教程 刘志成_Java程序设计实例教程教学课件作者刘志成章节05_Java图形用户界面技术.PPT...
- 【EF学习笔记09】----------使用 EntityState 枚举标记实体状态,实现增删改查
- python快速检测视频跳过帧_使用Python实现跳帧截取视频帧
- MyBatis自学(1):MyBatis概述
- 常见笔顺错误的字_最全汉字笔顺正确写法,建议家长为孩子收藏
- centos 6.8 升级mysql_centos6.8 Mysql5.6.22 升级 mysql-5.7.20
- nohup java - cp_nohup java - cp
- jq toggle()方法学习
- Luogu4781 【模板】拉格朗日插值
- 大数据工程师简历_大数据毕业生简历该怎么写?
- linux上dig命令,Linux中dig命令起什么作用呢?
- 网络处理器(NP)与图形处理器(GPU)
- 单尺度Retinex
- Excel中去掉多余的网格线
- 最全音视频基础知识学习详解(含多个干货链接)
- js中转换Date日期格式
热门文章
- 单元测试线程代码的5个技巧
- 使用MVC模式制作游戏-教程和简介
- 从MongoDB GridFS流式传输文件
- Java Secret:使用枚举构建状态机
- 60秒计时器的仿真电路_基于伏秒平衡的同步整流方案探讨
- IntelliJ IDEA for Mac 在MacOS模式下的注释快捷键(Comment Shortcut)
- sum和total的区别
- Python中replace()函数
- android提交项目到svn,Android Studio 配置SVN,通过Share project提交项目和实现忽略文件...
- python cls_关于python中的self,ins , cls的解释