- 博客(5)
- 收藏
- 关注
原创 Android Gems — Java源码分析之HashMap和SparseArray
SparseArray是Google为了提高性能替换HashMap而推荐使用的容器类,本文从源码的角度来了解一下两种容器的实现原理,从而分析一下其性能对比。HashMap是hash函数+拉链法实现,SparseArray则使用的是有序数组+二分查找实现。HashMap的性能影响主要体现:占用内存过大,插入过程内存动态增长的扩容操作代价,hash冲突时的链表遍历。SparseArray的性能影响
2016-11-29 20:47:51 1300
原创 Android Gems - Java源码分析之List
最近突发奇想,写个Java源码分析系列。开发过程中,总会使用各种类库,如ArrayList,LinkedList等,用得虽多,但对于其实现细节却了解甚少,所以专卖开辟个系列,从源码的角度分析一下各种Java类库的实现细节。就先从最简单的List入手。List是给接口,其继承自Collection,标准接口咱就不说了,List的实现有两个,ArrayList和LinkedList,前者是数组实现
2016-11-25 17:41:22 727
原创 Android Gems — AMS的Service生命周期管理
Service对于Android开发来说再熟悉不过了,不过大部分人对Service的了解也仅限于api,这篇文章,我们通过分析AMS的源码,从一个更高的高度来了解一下Service的整个生命周期。Service的生命周期接口:1. startService2. bindService3. stopService4. unbindService这几个接口在apk进程里调用,通过ActivityManagerNative这个Binder最后调用到ActivityManagerService里,而AM
2016-11-22 19:11:48 1536
原创 Android Gems — Android的LowMemoryKiller杀进程策略
Anroid的杀进程策略是基于kernel里的LowMemeoryKiller模块,LMK的实现在这里不展开分析,大致的原理就是LMK注册了内核的shrinker(lowmem_shrinker),内核线程kswapd,在linux回收内存分页的时候,通过shrinker回调回来给LMK。LMK根据每个进程的oom_adj值,将大于某个阈值的进程都发送SIGKILL信号杀掉。oom_adj的阈值因
2016-11-18 00:04:36 2083
原创 深入理解ART虚拟机—ART的函数运行机制
前面两篇文章介绍了ART的启动过程,而在启动之后,我们感兴趣的就是ART是怎么运行的。回顾一下虚拟机系列的前面几篇文章,我们可以理一下思路:一,apk以进程的形式运行,进程的创建是由zygote。参考文章《深入理解Dalvik虚拟机- Android应用进程启动过程分析》二,进程运行起来之后,初始化JavaVM参考文章《深入理解ART虚拟机—虚拟机的启动》三,JavaVM创建之
2016-11-04 16:09:57 5733
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人