0%

内存抖动

内存波动图形呈锯齿状,频繁创建回收对象,GC导致卡顿。

内存泄露

程序在申请内存后,无法释放已申请的内存空间,内存泄露堆积会造成OOM。在当前应用周期内不再使用的对象被GC Roots引用,导致不能回收,使实际可使用内存变小。

内存溢出

程序在申请内存时,没有足够的内存空间供其使用。Out Of Memory即OOM,OOM时会导致程序异常。JVM对应用分配最大内存值,超出这个值就会OOM。

Java堆内存溢出、无足够连续内存空间、FD数量超出限制、线程数量超出限制。

Read more »

Java集合框架数据结构

Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接口:ListSetQueue

Read more »

(一)常用命令

注:执行“./gradlew xxx”等同于执行“gradle xxx”,但执行“gradle xxx”需配置环境变量

清除build文件夹

1
./gradlew clean

检查依赖并编译打包

1
./gradlew build
Read more »

前言

本文是介绍Android系统启动——Zygote进程。(基于Android 10.0的源码)

目录

Zygote进程启动流程

在init启动Zygote时主要是调用app_main.cpp的main函数中的AppRuntime.start()方法来启动Zygote进程的,我们先看到app_main.cpp的main函数:

Read more »

前言

本文是介绍Android系统启动——Init进程。(基于Android 10.0的源码)

目录

Kernel 启动过程会创建 init 进程(pid=1),是用户空间的第一个进程,是所有用户空间进程的鼻祖。init 进程会启动servicemanager(binder服务管家),Zygote 进程(Android中Java进程的鼻祖)。Zygote 进程会创建 system_server 进程以及各种app进程,下图是这几个系统重量级进程之间的层级关系:

Read more »

前言

本文是介绍Android系统启动流程。

目录

Android系统架构

为了更好理解 Android 系统启动流程,我们需要先了解 Android 系统架构。它分为五层,从下往上依次分为Linux内核HAL硬件抽象层系统Native库和Android运行时环境Java Framework框架层应用层。如下图所示:

Read more »