
抄底 Android 内存优化
文章平均质量分 93
理论加事件的方式,从组成原理开始一层一层的搞懂到底什么是内存、虚拟内存、操作系统如何管理内存、JVM如何管理内存、GC 基本原理、Android Heap 内存优化技巧、Andrdoid Native 层内存优化技巧
大圣代
热爱技术,热爱生活
展开
-
「抄底 Android 内存优化 9」 —手撕 LeakCanary 核心原理
LeakCanary 核心源码解读 + 心得体会原创 2023-02-04 23:51:56 · 733 阅读 · 0 评论 -
[实践-内存优化] 解决 SVGAPlayer 内存问题的复盘总结
解决 SVGAPlayer 内存问题的复盘总结本文是基于真实项目优化而来,具体代码已经贡献给组织。SVGAPlayer-Android 这个库做的还是很实用的,但是存在着很严重的内存问题。为了提升项目的质量和稳定性,对其进行一些修改,并提交给组织。修复工作整体分为两步:修复内存泄漏问题。修复运行时无用资源对内存的消耗。修复内存泄漏问题发现内存泄漏的问题过程比较简单,重点是如何发现。在这次解决问题主要步骤就是使用 MMAT 工具分析内存泄漏问题,然后定位分析,解决问题。总的来说内存泄漏原创 2021-04-29 14:27:31 · 5558 阅读 · 10 评论 -
「抄底 Android 内存优化 8」 —— 快手线上 OOM 监控学习笔记
看看大厂是如何做线上内存监控的原创 2020-11-02 20:55:50 · 4562 阅读 · 4 评论 -
「抄底 Android 内存优化 7」 —— 手撕 LeakCanary 核心原理
LeakCanary 为什么要两次判定才确认是否存在内存泄漏呢?原创 2020-11-02 20:38:30 · 670 阅读 · 0 评论 -
「抄底 Android 内存优化 6」—— 浅析 Android 虚拟机内存管理
众所周知 Android 以 Java 、Kotlin 为编程语言,在编译时 Anrdoid 会将代码产出的字节码文件经优化后形成.dex 文件保存于 Apk 中,而 Android 中所有的应用程序都运行在 Android 虚拟机中。那么既然都已 Class 文件为原材料、以虚拟机为运行载体 Android 虚拟机与 JVM 在内存管理方法有什么差异呢?原创 2020-11-02 20:26:31 · 982 阅读 · 0 评论 -
「抄底 Android 内存优化 5」—— GC 回收器与内存分配策略
垃圾回收集(Garbage Collection,下文简称GC)并不是为 Java 而诞生的,在1960年诞生于麻省理工学院的 Lisp 是第一门开始使用内存动态分配和垃圾收集技术的语言。经过 60 年的发展内存自动回收技术已经逐步成熟,看似一切都已经进入了自动化的时代。那么还为什么要学习垃圾回收和内存分配策略呢?答案很简单:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动化”的技术实施必要的监控和调节。原创 2020-08-31 11:39:14 · 633 阅读 · 0 评论 -
「抄底 Android 内存优化 4」 — 图解 mmap 原理
前面我们学习了分配虚拟内存的两种系统调用:brk 和 mmap 。brk 就很好理解了,直接移动指针即可。但是对 mmap 却还是云里雾里不是很理解。这里就单独学习一下 mmap 的基本原理以及在 Android 系统中的应用。在 Android 中 mmap 应用于堆内存划分的同时也是 Binder 机制的基石,而腾讯的高性能 IO 库 [MMKV](https://github.com/tencent/mmkv)、美团的 [Logan](https://github.com/Meituan-Dia原创 2020-08-25 19:45:02 · 1473 阅读 · 0 评论 -
「抄底 Android 内存优化 3」 —— JVM 内存管理
你知道 JVM 进程的内存布局吗?原创 2020-08-02 14:58:33 · 1710 阅读 · 0 评论 -
「抄底 Android 内存优化 2」 —— Linux 内存管理
Android 系统是基于 Linux 打造的,要想学好 Android 内存相关知识,了解 Linux 是十分必要的。原创 2020-08-02 14:39:02 · 613 阅读 · 0 评论 -
「抄底 Android 内存优化 1」—— 虚拟内存
CPU 指令对内存的要求对于 CPU 执行指令来说有三种重要的寄存器:PC 寄存器(Program Counter Register:程序计数器),我们也称作指令地址寄存器(Instruction Address Register)。顾名思义,他就是用来存储下一条指令的地址的。指令寄存器(Instruction Register): 存储当前正在执行的指令。条件寄存器(Status Register),用里面的一个一个标记位(Flag),存放 CPU 进行算术或者逻辑计算的结果。原创 2020-07-23 21:21:15 · 2543 阅读 · 0 评论