经常看到一堆这样的日志.

D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms 2ms

在调优app性能的时候需要查看日志.android日志分几种类型:

- GC_CONCURRENT:这是因为你的heap内存占用开始往上涨了,为了避免heap内存满了而触发执行的。
- GC_FOR_MALLOC:这是由于concurrent gc没有及时执行完而你的应用又需要分配更多的内存,内存要满了,这个时候不得不停下来进行malloc gc。
- GC_EXTERNAL_ALLOC:这是为external分配的内存执行的GC,也就是上文提到的Bitmap Pixel Data之类的。
- GC_HPROF_DUMP_HEAP:这是当你做HPROF这样一个操作去创建一个HPROF profile的时候执行的。
- GC_EXPLICIT:这是由于你显式的调用了System.gc(),这是不提倡的,一般来说我们可以信任系统的GC。

freed 2049K表明在这次GC中回收了多少内存。
65% free 3571K/9991K是heap的一些统计数据,表明这次回收后65%的heap可用,存活的对象大小3571K,heap大小是9991K。
external 4703K/5261K是Native Memory的数据。放Bitmap Pixel Data或者是NIO Direct Buffer之类的。第一个数字表明Native Memory中已分配了多少内存,第二个值有点类似一个浮动的阀值,表明分配内存达到这个值系统就会触发一次GC进行内存回收。
paused 2ms 2ms表明GC暂停的时间。从这里你可以看到越大的heap size你需要暂停的时间越长。如果是concurrent gc你会看到2个时间一个开始一个结束,这时间是很短的,但如果是其他类型的GC,你很可能只会看到一个时间,而这个时间是相对比较长的。

Google I/O 2011: Memory management for Android Apps

翻译连接http://my.eoe.cn/futurexiong/archive/1299.html

更多相关文章

  1. Android(安卓)Studio 四大组件之 Service的生命周期上
  2. Android常用代码之APK root权限静默安装
  3. 关于Android或Java中获取系统时间问题
  4. ionic android打包
  5. Android开发_多线程详解(九)
  6. android 使用Sax 读取xml
  7. Android-MemoryFile介绍
  8. 异步加载注意的事项
  9. 单独编译Android(安卓)app模块

随机推荐

  1. Android(安卓)选择图片,加载图片,显示图片
  2. [译]Android开发之究竟使用哪个布局
  3. android 多线程 UI 入门
  4. Android(安卓)display架构分析(5-8)
  5. ListView的OnItemClickListener事件被其
  6. 第八次课——数据存储方式
  7. Android(安卓)的消息机制(4)
  8. android mtk6592 添加led三色灯,红色蓝色
  9. Android6.0 MountService和vold详解(三) vo
  10. Android(安卓)Studio 安装与使用