微信号:androidperf

介绍:分享android 性能优化/android power 优化技术,经验.

Cache memory in Android

2016-01-19 14:36 androidperf

 

Caches memory

Linux 有两种类型的cache,一是page cache, 另外一个是buffer cache. Page cache 的目的是为了加快文件的访问速度.当文件被加载到内存后,如果系统还有足够的内存,系统会把文件保存到内存中,以便以后可以直接从内存中访问此文件,而不需要从硬盘上读取该文件.从而加快了系统的反应速度,提升了用户体验.Buffer cache 的工作原理与pagecache 类似,只是其对象由文件变为block 设备.

我们可以从/proc/meminfo 中看到其信息,例如

#cat /proc/meminfo

...

Buffers:         15116 kB   // block 设备cache

Cached:          67912 kB   // file cache

...

 

当系统的memory(free+cache)不多时,便会triggerLMK. LMK trigger kill掉优先级比较低而占用了较大memoryapp. APP需要较多的内存时,系统首先分配freememoryapp.如果还不满足APP的要求, 系统便会shrinking cache.从新分配cacheAPP.重新分配cache是非常轻便和容易的操作,换句话说,不需要什么代价就可以完成.因为cache本身就是对文件的一份内存copy.我们不需要什么额外的操作.

 

所以在Android (应该是现代操作系统中),可用的memory包括free+cache.

 

Cache memory对系统的性能提升有比较大的好处而不是坏处.

Clear cache memory

linux2.6.16 以后,可以用简单的方法来clear cache memory.如下.

# cat  /proc/sys/vm/drop_caches

0

默认是01表示清空页缓存,2表示清空inode和目录树缓存,3清空所有的缓存

# sync

 

# cat /proc/meminfo

….

MemTotal:       2937580 kB

MemFree:          415972 kB

Buffers:           33868 kB

Cached:          1596844 kB

# echo 3 > /proc/sys/vm/drop_caches

cat /proc/meminfo

MemTotal:       2937580 kB

MemFree:         1807640 kB

Buffers:              60 kB

Cached:           274360 kB

 

 
Android性能优化 更多文章 Android Performance Case Study Android Performance Case Study(二) Android Graphic 架构 骁龙820 号称最强机 Android App Launching Made Gorgeous
猜您喜欢 iOS内存分配与分区 Android GC 那点事 来自哈佛大学,原滋原味 CSS in Action: @font-face,你用好了吗? iOS应用层架构之CDD(附Demo)