<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tectrol的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/tectrol</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; tectrol]]></copyright><item><title><![CDATA[ANR trace里的内存分析]]></title><link>https://blog.csdn.net/tectrol/article/details/163973683</link><guid>https://blog.csdn.net/tectrol/article/details/163973683</guid><author>tectrol</author><pubDate>Sat, 22 Aug 2026 14:46:47 +0800</pubDate><description><![CDATA[注：RssKb=RssAnonKb+RssShmemKb+其它（如文件映射内存）在ANR的trace堆栈文件里，这些指标的含义、异常阈值、ANR关联问题。在ANR分析中的作用。]]></description><category></category></item><item><title><![CDATA[Systrace系列12 —— CPU Info 解读]]></title><link>https://blog.csdn.net/tectrol/article/details/130900142</link><guid>https://blog.csdn.net/tectrol/article/details/130900142</guid><author>tectrol</author><pubDate>Sat, 27 May 2023 13:15:10 +0800</pubDate><description><![CDATA[本文主要是对 Systrace 中的 CPU 信息区域(Kernel)进行简单介绍，简单介绍了如何在 Systrace 中查看 Kernel 模块输出的 CPU 相关的信息，了解 CPU 频率、调度、锁频、锁核相关的信息。]]></description><category></category></item><item><title><![CDATA[Systrace系列11 —— Triple Buffer 解读]]></title><link>https://blog.csdn.net/tectrol/article/details/130900103</link><guid>https://blog.csdn.net/tectrol/article/details/130900103</guid><author>tectrol</author><pubDate>Sat, 27 May 2023 13:08:16 +0800</pubDate><description><![CDATA[Systrace 中可以看到应用的掉帧情况，我们经常看到说主线程超过 16.6 ms 就会掉帧，其实不然，这和我们这一篇文章讲到的 Triple Buffer 和一定的关系，一般来说，Systrace 中我们从 App 端和 SurfaceFlinger 端一起来判断掉帧情况。]]></description><category></category></item><item><title><![CDATA[Systrace系列10 —— Binder 和锁竞争解读]]></title><link>https://blog.csdn.net/tectrol/article/details/130898836</link><guid>https://blog.csdn.net/tectrol/article/details/130898836</guid><author>tectrol</author><pubDate>Sat, 27 May 2023 11:07:23 +0800</pubDate><description><![CDATA[Android 的大部分进程间通信都使用 Binder，这里对 Binder 不做过多的解释，想对 Binder 的实现有一个比较深入的了解的话，推荐你阅读下面三篇文章理解Android Binder机制1/3：驱动篇理解Android Binder机制2/3：C++层理解Android Binder机制3/3：Java层。]]></description><category></category></item><item><title><![CDATA[Systrace系列9 —— MainThread 和 RenderThread 解读]]></title><link>https://blog.csdn.net/tectrol/article/details/130898527</link><guid>https://blog.csdn.net/tectrol/article/details/130898527</guid><author>tectrol</author><pubDate>Sat, 27 May 2023 11:02:22 +0800</pubDate><description><![CDATA[本文是介绍 Android App 中的 MainThread 和 RenderThread，也就是大家熟悉的和。文章会从 Systrace 的角度来看 MainThread 和 RenderThread 的工作流程，以及涉及到的相关知识：卡顿、软件渲染、掉帧计算等。这里以滑动列表为例 ，我们截取主线程和渲染线程的工作流程(每一帧都会遵循这个流程，不过有的帧需要处理的事情多，有的帧需要处理的事情少) ，重点看 “UI Thread ” 和 RenderThread 这两行上面这个流程在。]]></description><category></category></item><item><title><![CDATA[Systrace系列8 —— Vsync-App ：基于 Choreographer 的渲染机制详解]]></title><link>https://blog.csdn.net/tectrol/article/details/130898365</link><guid>https://blog.csdn.net/tectrol/article/details/130898365</guid><author>tectrol</author><pubDate>Sat, 27 May 2023 10:42:03 +0800</pubDate><description><![CDATA[Choreographer 扮演 Android 渲染链路中承上启下的角色承上：负责接收和处理 App 的各种更新消息和回调，等到 Vsync 到来的时候统一处理。比如集中处理 Input(主要是 Input 事件的处理) 、Animation(动画相关)、Traversal(包括 measure、layout、draw 等操作) ，判断卡顿掉帧情况，记录 CallBack 耗时等启下：负责请求和接收 Vsync 信号。]]></description><category></category></item><item><title><![CDATA[Systrace系列7 —— Vsync 解读]]></title><link>https://blog.csdn.net/tectrol/article/details/130835733</link><guid>https://blog.csdn.net/tectrol/article/details/130835733</guid><author>tectrol</author><pubDate>Tue, 23 May 2023 21:20:25 +0800</pubDate><description><![CDATA[本文主要是是介绍 Android 中的 Vsync 机制。文章会从 Systrace 的角度来看 Android 系统如何基于 Vsync 每一帧的展示。Vsync 是 Systrace 中一个非常关键的机制，虽然我们在操作手机的时候看不见，摸不着，但是在 Systrace 中我们可以看到，Android 系统在 Vsync 信号的指引下，有条不紊地进行者每一帧的渲染、合成操作，使我们可以享受稳定帧率的画面。]]></description><category></category></item><item><title><![CDATA[Systrace系列6 —— Input 解读]]></title><link>https://blog.csdn.net/tectrol/article/details/130835661</link><guid>https://blog.csdn.net/tectrol/article/details/130835661</guid><author>tectrol</author><pubDate>Tue, 23 May 2023 21:15:14 +0800</pubDate><description><![CDATA[本文主要是对 Systrace 中的 Input 进行简单介绍，介绍其 Input 的流程；Systrace 中 Input 信息的体现 ，以及如何结合 Input 信息，分析与 Input 相关的问题。在。]]></description><category></category></item><item><title><![CDATA[Systrace系列5 —— SurfaceFlinger 解读]]></title><link>https://blog.csdn.net/tectrol/article/details/130835571</link><guid>https://blog.csdn.net/tectrol/article/details/130835571</guid><author>tectrol</author><pubDate>Tue, 23 May 2023 21:12:33 +0800</pubDate><description><![CDATA[本文主要是对 SurfaceFlinger 进行简单介绍，介绍了 SurfaceFlinger 中几个比较重要的线程，包括 Vsync 信号的解读、应用的 Buffer 展示、卡顿判定等，由于 Vsync 这一块在和这两篇文章里面已经介绍过，这里就不再做详细的讲解了。这里直接上官方对于—- 引用自那么 Systrace 中，我们关注的重点就是上面这幅图对应的部分。]]></description><category></category></item><item><title><![CDATA[Systrace系列4 —— SystemServer 解读]]></title><link>https://blog.csdn.net/tectrol/article/details/130835439</link><guid>https://blog.csdn.net/tectrol/article/details/130835439</guid><author>tectrol</author><pubDate>Tue, 23 May 2023 21:04:45 +0800</pubDate><description><![CDATA[本文主要是对 SystemServer 进行简单介绍，介绍了 SystemServer 中几个比较重要的线程，由于 Input 和 Binder 比较重要，所以单独拿出来讲，在这里就没有再涉及到。]]></description><category></category></item><item><title><![CDATA[Systrace系列3 —— Why 60 fps ？]]></title><link>https://blog.csdn.net/tectrol/article/details/130796162</link><guid>https://blog.csdn.net/tectrol/article/details/130796162</guid><author>tectrol</author><pubDate>Sun, 21 May 2023 20:28:09 +0800</pubDate><description><![CDATA[本文解释一下为何大家总是强调 60 fps。为何我们讲到流畅度，要首先说 60 帧。在理解了上面的基本概念之后，我们再回到 Android 这边，为何 Android 现在的渲染机制，是使用 60 fps 作为标准呢？这主要和屏幕的刷新率有关。]]></description><category></category></item><item><title><![CDATA[Systrace系列2 —— 预备知识]]></title><link>https://blog.csdn.net/tectrol/article/details/130795836</link><guid>https://blog.csdn.net/tectrol/article/details/130795836</guid><author>tectrol</author><pubDate>Sun, 21 May 2023 20:18:40 +0800</pubDate><description><![CDATA[本文主要是讲解一些分析 Systrace 的预备知识, 主要bao'ku如何查看 Systrace 中的线程状态 , 如何对线程的唤醒信息进行分析, 如何解读信息区的数据, 以及介绍了常用的快捷键. 通过本篇文章的学习, 相信你可以掌握进程和线程相关的一些信息, 也知道如何查看复杂的 Systrace 中包含的关键信息。]]></description><category></category></item><item><title><![CDATA[Systrace系列1—— 简介]]></title><link>https://blog.csdn.net/tectrol/article/details/130795545</link><guid>https://blog.csdn.net/tectrol/article/details/130795545</guid><author>tectrol</author><pubDate>Sun, 21 May 2023 19:43:15 +0800</pubDate><description><![CDATA[Systrace 是 Android4.1 中新增的性能数据采样和分析工具。它可帮助开发者收集 Android 关键子系统（如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等 Framework 部分关键模块、服务，View系统等）的运行信息，从而帮助开发者更直观的分析系统瓶颈，改进性能。Systrace 的功能包括跟踪系统的 I/O 操作、内核工作队列、CPU 负载以及 Android 各个子系统的运行状况等。内核部分。]]></description><category></category></item><item><title><![CDATA[Android开发知识体系总章]]></title><link>https://blog.csdn.net/tectrol/article/details/123964896</link><guid>https://blog.csdn.net/tectrol/article/details/123964896</guid><author>tectrol</author><pubDate>Tue, 05 Apr 2022 09:52:31 +0800</pubDate><description><![CDATA[Flutter

Flutter常见插件
	用了这个插件后，Flutter开发更简单了！
Java基础


	Java Object类方法
	
	
	HashMap原理，Hash冲突，并发集合，线程安全集合及实现原理
	
	
	HashMap 和 HashTable 区别
	
	
	HashCode 作用，如何重载hashCode方法
	
	
	ArrayList与LinkList区别与联系
	
	
	Java反射机制
	
	
	Java代理模式及三种方式
	
	
	Java泛型
	
	
	Synchron]]></description><category></category></item><item><title><![CDATA[android中的EventLog]]></title><link>https://blog.csdn.net/tectrol/article/details/123941848</link><guid>https://blog.csdn.net/tectrol/article/details/123941848</guid><author>tectrol</author><pubDate>Sun, 03 Apr 2022 19:00:28 +0800</pubDate><description><![CDATA[调试分析Android时，经常需要查看EventLog，了解当前Activity状态和window的信息等等。本文就列举以下am相关的tags含义。

   本文涉及的源码类有EventLog.java、EventLogTags.java，另外tags格式的定义位于文件/system/etc/event-log-tags。

如果在终端输入：


logcat -b events

那么会输出大量类似这样的信息：


06-01 13:44:55.518 7361 8289 I am_create...]]></description><category></category></item><item><title><![CDATA[Linux 内核空间与用户空间]]></title><link>https://blog.csdn.net/tectrol/article/details/123779239</link><guid>https://blog.csdn.net/tectrol/article/details/123779239</guid><author>tectrol</author><pubDate>Sun, 27 Mar 2022 19:30:43 +0800</pubDate><description><![CDATA[内核空间和用户空间

 对 32 位操作系统而言，它的寻址空间（虚拟地址空间，或叫线性地址空间）为 4G（2的32次方）。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kernel)，它独立于普通的应用程序，可以访问受保护的内存空间，也有访问底层硬件设备的所有权限。为了保证内核的安全，现在的操作系统一般都强制用户进程不能直接操作内核。具体的实现方式基本都是由操作系统将虚拟地址空间划分为两部分，一部分为内核空间，另一部分为用户空间。针对 Linux 操作系统而言，最高的 1G 字节(从虚拟地址]]></description><category></category></item><item><title><![CDATA[解析ViewRootImpl]]></title><link>https://blog.csdn.net/tectrol/article/details/123599425</link><guid>https://blog.csdn.net/tectrol/article/details/123599425</guid><author>tectrol</author><pubDate>Sat, 19 Mar 2022 18:41:27 +0800</pubDate><description><![CDATA[一、View 通过 ViewRootImpl 来绘制

     ViewRootImpl 是一个视图层次结构的顶部，在上一篇文章中我们知道了 ViewRootImpl 实现了 View 与 WindowManager 之间所需要的协议，作为 WindowManagerGlobal 中大部分的内部实现。这个好理解，在 WindowManagerGlobal 中实现方法中，都可以见到 ViewRootImpl，也就说 WindowManagerGlobal 方法最后还是调用到了 ViewRootIm...]]></description><category></category></item><item><title><![CDATA[Java虚拟机（深度）]]></title><link>https://blog.csdn.net/tectrol/article/details/123465000</link><guid>https://blog.csdn.net/tectrol/article/details/123465000</guid><author>tectrol</author><pubDate>Sun, 13 Mar 2022 20:56:30 +0800</pubDate><description><![CDATA[1. Java 内存区域与内存溢出异常

1.1 运行时数据区域

   根据《Java 虚拟机规范(Java SE 7 版)》规定，Java 虚拟机所管理的内存如下图所示。



1.1.1 程序计数器


内存空间小，线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令，分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成


如果线程正在执行一个 Java 方法，这个计数器记录的是正在执行的虚拟机字节码指令的地址；如果正在执行的是 Native...]]></description><category></category></item><item><title><![CDATA[Linux Signal信号详解]]></title><link>https://blog.csdn.net/tectrol/article/details/123464504</link><guid>https://blog.csdn.net/tectrol/article/details/123464504</guid><author>tectrol</author><pubDate>Sun, 13 Mar 2022 19:45:04 +0800</pubDate><description><![CDATA[信号是Linux编程中非常重要的部分，本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号，以及有关信号的几个系统调用。
   信号机制是进程之间相互传递消息的一种方法，信号全称为软中断信号，也有人称作软中断。从它的命名可以看出，它的实质和使用很象中断。所以，信号可以说是进程控制的一部分。]]></description><category></category></item><item><title><![CDATA[Activity、Window、View 之间的关系]]></title><link>https://blog.csdn.net/tectrol/article/details/123462041</link><guid>https://blog.csdn.net/tectrol/article/details/123462041</guid><author>tectrol</author><pubDate>Sun, 13 Mar 2022 16:59:58 +0800</pubDate><description><![CDATA[Activity 启动后就可看到我们写的 Layout 布局界面，Activity 从 setContentView() 到显示中间做了什么呢？下面我们就来分析下这个过程。

本文主要对于以下问题进行分析：

Window 是什么？
Activity 与 PhoneWindow 与 DecorView 之间什么关系？]]></description><category></category></item></channel></rss>