- 博客(253)
- 资源 (6)
- 收藏
- 关注
原创 Android Camera性能优化概述
做camera性能优化方面的工作有几年了,想写一篇文章简单介绍一下其中涉及到的具体技术,这篇文章会大概介绍一下涉及到的技术。
2024-10-07 21:31:41 1517
原创 Android中使用eBPF跟踪进程kgsl内存分配
在微信公众号写了一篇关于高通平台 kgsl 内存文章,可以参考:Android中使用eBPF跟踪进程kgsl内存分配
2024-09-11 14:54:41 270
原创 Android中使用eBPF跟踪 FD打开与关闭
我们知道在Android系统中 fd 泄露,可以通过 google 开发的 fdtrack来进行排查,但是有些情况下我们想在外发release版本去监控fd泄露情况,fdtrack就不能很好的满足需求了。可以用eBPF去监控fd泄露。
2024-09-06 18:33:03 262
原创 Android中使用 eBPF 跟踪 native RSS内存
在公众号上写了一篇文章,在Android中使用 eBPF 跟踪native 内存,跟踪的是 rss_stat 这个tracepoint。
2024-09-03 18:08:51 517
原创 解析进程 /proc/pid/maps 和 /proc/pid/smaps
就是当进程申请内存的时候,Linux会给他先分配页,但是并不会区建立页与页框的映射关系,意思就是说并不会分配物理内存,而当真正使用的时候,就会产生一个缺页异常,硬件跳转page fault处理程序执行,在其中分配物理内存,然后修改页表(创建页表项)。查看该page的引用数,如果引用>1,则归为shared,如果是1,则归为private,同时也查看该page的flag,是否标记为_PAGE_DIRTY,如果不是,则认为干净的。对匿名映射来说,因为没有文件在磁盘上,所以没有设备号,始终为00:00。
2024-03-08 16:43:07 2506
原创 STL unordered_set/unordered_map 不能默认hash vector?
STL unordered_set/unordered_map 不能默认hash vector?
2024-02-23 17:18:14 607
原创 simpleperf、Flame Graph使用简介
使用simpleperf分析camera gpu内存泄露问题 、camera 算法GPU内存拆解
2024-01-24 17:54:36 2264
原创 对比fwrite、mmap、DirectIO 的内存、性能开销,剖析 Page Cache
思考一个问题:Page Cache 到底是属于内核空间还是属于用户空间呢?如何用数据观测Page Cache?_如何查看page cache-CSDN博客。
2024-01-09 18:15:25 1370
原创 记录一次 Linux/Android 读取大文件失败
最近在做项目的过程中,有一个需要是连续读5个以上的 500MB+的文件,对齐进行解压缩。常见的做法是通过 std::ifstream 或者 fopen 来进行读取。但是在第二次读取的时候文件就一直为0。
2023-12-14 14:33:04 403
原创 HWAsan机制
hwasan是Hardware Address Sanitizer的简称,它是clang llvm提供的一套内存错误检测系统,可以用来检测C/C++代码常见的内存错误相比与之前的asan(Address Sanitizer)它在性能、内存占用上都有不小的提升,但是由于它使用了依赖AArch64的Address tagging特性,所以只能在64位程序开启,目前只有Android 10.0及以上版本的AArch64默认支持了hwasan。
2023-11-29 11:43:52 782
原创 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?
可以说,在实际的应用过程中,这些有零有整的实数,是和整数同样常用的数据类型,我们也需要考虑到。本来 32 个比特我们可以表示 40 亿个不同的数,但是在 BCD 编码下,只能表示 1 亿个数,如果我们要精确到分的话,那么能够表示的最大金额也就是到 100 万。因为我们的浮点数,不仅仅想要表示很大的数,还希望能够表示很小的数,所以指数位也会有负数。宇宙内的原子的数量,大概在 10 的 82 次方左右,我们就用 1.0×10^82 这样的形式来表示这个数值,不需要写下 82 个 0。
2023-10-31 17:53:39 121
原创 理解电路:从电报机到门电路,我们如何做到“千里传信”?
输出端的作用,不仅仅是通过一个蜂鸣器或者灯泡,提供一个供人观察的输出信号,通过“螺旋线圈 + 磁性开关”,使得我们有“开”和“关”这两种状态,这个“开”和“关”表示的“1”和“0”,还可以作为后续线路的输入信号,让我们开始可以通过最简单的电路,来组合形成我们需要的逻辑。当我们把输出端的“螺旋线圈 + 磁性开关”的组合,从默认关掉,只有通电有了磁场之后打开,换成默认是打开通电的,只有通电之后才关闭,我们就得到了一个计算机中的“非”操作。就像晶体管在不同的情况下,表现为导电的“1”和绝缘的“0”的状态。
2023-10-22 14:27:05 280
原创 ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?
ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?
2023-10-15 13:55:09 282
基于QT4的简易绘图小软件
2020-08-05
基于QT4的简易文本编辑器小软件
2020-08-05
基于QT4的简易计算器小软件
2020-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人