
Android性能
文章平均质量分 96
It一zhai男
Android,kotlin,Java,flutter,python,
展开
-
App启动框架
目录App启动框架假设任务都在主线程中完成多线程中执行App启动框架如上图所示,有5个启动任务,它们组成了有向无环图,Task2和Task4依赖Task1,需要在Task1执行完成后,Task2和Task4才开始执行,Task3依赖Task2,Task5依赖Task3和Task4。按照入度,可以统计如下表。任务入度Task10Task21Task31Task41Task52按照依赖关系,可以划分为以下表格:任务被依赖的任务原创 2022-03-28 18:35:14 · 596 阅读 · 0 评论 -
【性能】Android中的内存溢出(Out Of Memory,OOM)
【性能】Android中的内存溢出(Out Of Memory,OOM)1 JVM内存区域介绍2. OOM形成的原因3. 造成OOM的有哪些3.1 从JVM的角度3.2 从具体使用角度3.2.1 内存泄漏导致的内存溢出3.2.2 资源使用不合理导致内存溢出参考文章1 JVM内存区域介绍一般来说,应用创建时会给其分配一个虚拟机,应用的中几乎所有的数据都存储在虚拟机的内存区域,而虚拟机的内存区域又分为5大块,分别是:Java堆,方法区,程序计数器,虚拟机栈和本地方法栈,借用一张图:Java堆(Jav原创 2020-07-04 23:03:58 · 681 阅读 · 0 评论 -
【性能】Android内存管理理论篇
注:本文主要来自于谷歌官网1 内存管理概览Android Runtime(ART)和Dalvik虚拟机使用的是分页和内存映射来管理内存。这意味着应用修改的任何内存,无论修改的方式是分配新对象还是轻触内存映射的页面,都会一直驻留在RAM,并且无法换出。要从应用中释放内存,只能释放应用保留的对象引用,使内存可供垃圾回收器回收。这种情况有一个除外:对于任何未经修改的内存映射文件(如代码),如果系统...原创 2020-04-16 19:16:54 · 440 阅读 · 0 评论 -
【性能】Java对象生命周期
Java对象生命周期对象的生命周期大致可以分为7个阶段:创建阶段(Created)应用阶段(Using)不可视阶段(Invisible)不可达阶段(Unreachable)可收集阶段(Collected)终结阶段(Finalized)对象空间重新分配(Deallocated)创建阶段(Created)在对象创建阶段,一般要经历以下几个步骤才能完成对象的创建过程:为对象分...原创 2020-04-14 17:21:49 · 547 阅读 · 0 评论 -
【性能】垃圾收集器(GC)
目录1 概述2 判断对象是否存活2.1 引用计数法2.2 可达性分析3 垃圾收集算法3.1 标记-清除算法3.2 复制算法3.3 标记-整理算法3.4 分代收集算法1 概述在Java内存运行时的各个部分中,程序计数器,虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因...原创 2019-06-21 15:03:04 · 343 阅读 · 0 评论 -
【性能】OOM原理解析:LowMemoryKiller原理
1 概述Android的设计理念之一,便是应用程序退出,但进程还会继续存在系统以便再次启动时提高响应时间. 这样的设计会带来一个问题, 每个进程都有自己独立的内存地址空间,随着应用打开数量的增多,系统已使用的内存越来越大,就很有可能导致系统内存不足, 那么需要一个能管理所有进程,根据一定策略来释放进程的策略,这便有了lmk,全称为LowMemoryKiller(低内存杀手),lmkd来决定什么时...原创 2020-04-14 10:53:11 · 1613 阅读 · 0 评论