标签:内存清除筛选

C++零基础到工程实战(二) - 变量的本质就是内存

C++ 里的变量不只是一个名字和一个值。它占用一段内存,类型决定这段内存的大小、其中二进制数据的含义以及可以执行的运算。它还受作用域限制,并在某个明确的时刻创建、释放。 C++ 没有垃圾回收,内存的申请和释放由代码控制,所以类型、数值、运算规则和生命周期需要放在一起理解。 一、变量定义介绍 1.1 从变量值“可改变”说起 变量用来保存程序运行期间会改变的数值。程序由数据结构和算法两部分组成,变量对

Handler 运行流程源码解析(三):从引用链看 Handler 内存泄漏

本文内容整理自享学团队直播课《Handler 运行流程源码解析(三)》 一、先说结论:Handler 本身不会自动导致内存泄漏 “Handler 为什么会导致内存泄漏?”这个问题,常见回答是“生命周期不一致”或“内部类持有外部类”。这两句话都触及了现象,却没有解释完整。 真正决定对象能否被回收的,是它是否仍能从 GC Root 到达。以 Activity 中的非静态内部类 Handler 为例,只

Binder(四):mmap 原理:Binder 一次拷贝的底层机制

一、mmap 是什么 1.1 内存映射的定义 mmap 是 Linux 提供的一个系统调用(用户态程序请求内核代为执行某项工作的入口),作用是把进程的一段虚拟内存区域和一个具体的对象关联起来。这个对象可以是磁盘上的文件,也可以是内核分配的一批物理内存。关联建立之后,用文件的内容初始化这块虚拟内存区域,进程读写这段地址就等于读写那个对象。 这里的虚拟地址是进程眼里的地址编号,不装数据;数据躺在物理内

Binder(三):Binder 如何做到一次拷贝,接收方与内核的共享区域

一、面试题:一次拷贝是怎么做到的 1.1 问题由来 上一篇讲 Binder 相对传统 IPC 的三点优势,第一条就是数据只拷贝一次。面试题接着往下追:既然管道、消息队列、Socket 都要拷两次,Binder 凭什么少一次,那一次省在哪里。 答案不在 Binder 自己身上。它没有发明新的数据搬运方式,只是把「谁和谁共享内存」这件事重新安排了一遍。 1.2 关键词:mmap 绕不开的机制是 mma

Binder(二):Binder的优势,一次拷贝、易用与安全

一、Linux 有 IPC,为什么 Android 还要再造 Binder 1.1 Linux 的 IPC 全家桶 Android 跑在 Linux 内核上,而 Linux 早就备齐了 IPC(Inter-Process Communication,进程间通信)手段:管道、Socket、信号、消息队列、共享内存,每一种都有几十年的工程验证。谷歌却在这之外单独造了 Binder,并把它做成 Andr