自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 art 的 Space

staticconstexpr space::LargeObjectSpaceType kDefaultLargeObjectSpaceType =USE_ART_LOW_4G_ALLOCATOR ?space::LargeObjectSpaceType::kFreeList: space::LargeObjectSpaceType::kMap; heap 初始化的时候large_object_space_type 取值由kDefaultLargeObjectSpaceTyp...

2020-05-22 11:08:33 571

原创 art的bitmap使用

bitmap的原理bitmap是一块内存,利用其中的每一位去标记对应的内存是否被使用,1为被使用,0位没有使用。SpaceBitmapart中使用SpacBitmap 对heap进行标记,我们看下spaceBitmap的重要逻辑a. Creat函数初始化 -----------Create------------------------------------------------- SpaceBitmap<kAlignment>* SpaceBit.

2020-05-22 11:05:16 336

原创 Art GC cause

目前Art定义的触发GC的cause cause type cause comment kGcCauseForAlloc Alloc GC triggered by a failed allocation. Thread doing allocation is blocked waiting for GC beforere trying allocation. 对象内存分配失败触发GC,正在请求分配的线程会等待GC完..

2020-05-22 11:00:03 488

原创 Android Q 开机启动流程

开机启动概述:step 1: 上电开机长按power键后引导芯片开始从固化在ROM的预设代码处执行,加载引导程序(BootLoader)到RAM.step 2: BootLoader启动跳转到BootLoader的入口函数,开始执行BootLoader的代码.硬件初始化工作(硬件时钟、手机的主板等)完成初始化uart端口的操作arch_inittarget_inita...

2020-05-22 10:53:32 3511 2

原创 Android Art Gc - 概述

基于Android Q源码:1.GC 回收算法GC目前只有四种基本方法:(1)Mark-Sweep Collection 标记清除算法(2)Copying Collection 复制算法(3)Mark-Compact Collection 标记-压缩算法(3)Reference Counting 引用计数算法--未被art采用目前art默认使用的GC方案:concurrent...

2020-01-08 18:50:43 1808

转载 C/C++内存对齐详解

1、什么是内存对齐还是用一个例子带出这个问题,看下面的小程序,理论上,32位系统下,int占4byte,char占一个byte,那么将它们放到一个结构体中应该占4+1=5byte;但是实际上,通过运行程序得到的结果是8 byte,这就是内存对齐所导致的。//32位系统#include<stdio.h>struct{ int x; char y;}s;...

2019-12-13 11:11:43 151 1

转载 Linux 线程同步之信号量sem

信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。需要包含头文件semaphore.h。主要用到的函数:int sem_init(sem_t *sem, int pshared, unsigned int value);,其中sem是要初始化的信号量,pshared表示此信号量是在进程间共享还是线程间共享,value是信号量的初始值...

2019-10-15 15:54:21 184

原创 Arm 基础-寻址方式

1.ARM处理器寻址方式寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。(1).寄存器寻址 (2).立即寻址 (3).寄存器偏移寻址 (4).寄存器间接寻址(5).基址寻址 (6).多寄存器寻址 (7).堆栈寻址 (8).块拷贝寻址(9).相对寻址(1)....

2019-08-28 18:05:55 1910

转载 Linux进程状态

Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。Linux进程状态:R (TASK_RUNNING),可执行状态。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列...

2019-08-22 20:15:11 158

转载 Google继Project Treble后的大动作:Android Q系统组件更新机制APEX

一直以来,与iOS相比,Android在性能、安全、功耗、碎片化(兼容性)问题上一直被诟病。知耻而后勇,知弱而图强。自Android4.0以来,Google一直致力于解决性能(Project Butter/OpenGLRenderer/RenderThread/ART)、安全(SELinux/FDE/FBE/VerifiedBoot)、功耗问题(Project Volta/Doze/App...

2019-07-16 10:56:47 1968

原创 Android 7.0平台开机启动

Android 启动概述Android 系统是运行在Linux 内核上的,所以它的启动过程则是基于kernel的启动发生的。首先Kernel启动过程中会创建用户空间的第一个进程init进程,该进程也是用户空间的鼻祖,是系统的守护进程。之后init进程会启动serviceManager,它则是bind的服务管家,后续启动的许多系统或用户service都会在它里面进行注册。然后init进程也会创建Z...

2019-07-14 09:45:36 2641

原创 Activity启动流程-AMS

Activity的启动的基本介绍因为关于AMS内部类的关系,例如stack、task,已有了相关的文档做介绍,本文不再赘述细说,基于相关文档以及代码的学习,本文主要集中篇幅集中于第三章,描述在Activity进程的启动流程中,启动应用进程以及应用进程中启动Activity的流程,也就是Activity启动的后半段流程。第二章关于Activity启动的前期准备主要涉及AMS的重点地方也会做详细描述...

2019-07-14 09:43:11 559

原创 Android 杀应用进程的代码分析

杀死应用进程的代码分析之前在Android AMS启动Activity流程一文有写过进程启动的流程,这里不再赘述,这一章主要跟踪下杀进程的处理方式和流程。启动涉及到SING_QUIT3信号的处理,因为涉及trace的dump则单独在下一章说明。 用户空间杀进程 Process.java 官方的解释Tools for managing OS processes,之前在进程启动的时候AMS...

2019-07-14 09:40:27 3505

原创 Android 8.0 ContentProvider的学习和分析

ContentProvider的介绍和应用使用方法 如何使用ContentProvider ContentProvider 组建主要用于 Android 系统中不同应用程序间的数据交换.例如应用程序 A 通过 ContentProvider 暴露内部的数据, 应用程序B 通过 ContentResolver 和 A 提供的 Uri 来操作(增, 删 改, 查) A 的数据.如何创建一个c...

2019-07-14 09:38:49 1004

原创 Android 8.0 手机亮灭屏

本文主要跟踪分析通过按松power键来唤醒,熄灭屏幕的逻辑。下面是一些相关类的介绍PowerManagerService.java:简称PMS,负责Andorid系统中电源管理方面的工作。作为系统核心服务之一,主要处理系统中与power相关的计算,然后决策系统该如何反应。同时PowerManagerService与其他服务及HAL层等都有交互关系,协调power如何与系统其他模块的交互,比如没...

2019-07-14 09:37:14 1689

原创 android 线程级别

Priority Value Description ANDROID_PRIORITY_LOWEST 19 可以使用最后的 ANDROID_PRIORITY_BACKGROUND 10 用于background task...

2019-07-12 17:10:09 771

原创 字符串排序问题

题目描述编写一个程序,将输入字符串中的字符按如下规则排序(一个测试用例可能包含多组数据,请注意处理)。规则1:英文字母从A到Z排列,不区分大小写。如,输入:Type输出:epTy规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入:BabA输出:aABb规则3:非英文字母的其它字符保持原来的位置。如,输入:By?e输出...

2019-03-11 17:28:56 541

原创 Android P Binder-ServiceManager 分析

Service Manager 启动和初始化ServiceManager作为binder的大管家,也是binder的守护进程,它本身也是binder的一个server端。它本身逻辑比较简单,只是实现对binder 服务的注册和查询。但是它的逻辑主要是跟binder驱动进行交互,我们可以通过分析ServiceManger的相关逻辑作为我们认识和学习binder的一个入口,以对binder驱...

2019-02-27 16:31:59 409

原创 Android ClassLoader 机制分析

1.Java ClassLoader机制Android 的ClassLoader机制与Java 的ClassLoader机制略有不同,主要差异在Java加载的是class文件,而Android 加载的是dex文件,但是在ClassLoader的设计体系和思想上还是相近的,毕竟Android 的虚拟机也是从JVM改变演进的,所以我们先来跟踪分析java 的ClassLoader机制,对于我们理解...

2019-02-27 16:21:15 548

原创 起三个线程依次读取一个数组的数据,同时只有一个线程执行?

public class ReadString {    private String[] read = {"1","2","3","4","5","6","7","8","9","10"};    public synchronized void read(int id ,int index){    

2018-09-30 10:20:18 2734 2

原创 Android 8.0 RescueParty介绍

1.基本介绍目前市场上的消费者包括小白用户,当他们的手机出现无限循环启动的异常时,用户没有办法修复异常只能通过设备商售后处理。Google在Android 8.0加入该新功能,称之为rescue party救援程序。主要监控系统核心程序出现循环崩溃的时候,会启动该程序,根据不同的救援级别做出一系列操作,看是否可恢复设备,最严重的时候则是通过进入recovery然后提供用户清空用户数据恢复出厂设置解...

2018-05-17 09:47:10 3988

STC单片机实验板原理图

STC单片机实验板原理图

2013-05-17

单片机C语言程序设计实训100例--基于protus仿真

单片机C语言程序设计实训100例--基于protus仿真

2013-05-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除