功耗/性能/内存管理
文章平均质量分 89
内存管理
repinkply
工程师一名,热爱技术
展开
-
mmap详解
想写一篇文章,详细的介绍一下mmap,主要是原理、用法、mmap泄露来进行介绍。说到mmap,首先得从堆空间说起。原创 2023-09-13 18:44:20 · 1376 阅读 · 0 评论 -
页中断:fork、mmap背后的保护神
大多数时候,我们即使不知道它们的存在,程序也能正常地运行。但是有时候,程序写得不好就有可能造成中断频繁发生,从而带来巨大的性能下降。面对这种情况,我们第一时间就应该想到统计页中断。因为除了页中断本身会带来性能下降之外,统计页中断也可以反推程序的运行特点,从而为进一步分析程序瓶颈点,提供数据和思路。页中断和普通的中断一样,它的中断服务程序入口也在 IDT 中,但它是由 MMU 产生的硬件中断。这三个问题,虽然看上去相互之间关系不大,但实际上它们背后都依赖。原创 2023-04-21 17:57:50 · 593 阅读 · 0 评论 -
深入理解栈:从CPU和函数的视角看栈的管理、从栈切换的角度理解进程和协程
执行单元是指 CPU 调度和分派的基本单位,它是一个 CPU 能正常运行的基本单元。执行单元是可以停下来的,只要能把 CPU 状态(其实就是寄存器的值)全部保存起来,等到这个执行单元再被调度的时候,就把状态恢复过来就行了。我们把这种保存状态,挂起,恢复执行,恢复状态的完整过程,称为执行单元的调度 (Scheduling)。具体来说,常见的执行单元有进程,线程和协程三种,接下来,我们详细说明这三种执行单元的区别和联系。我们先来比较进程和线程。原创 2023-04-21 17:11:35 · 1187 阅读 · 0 评论 -
内存布局:深度剖析应用程序中的内存布局
第一点:1.需要明白的是C语言中一切的操作都是基于内存的(其实其他编程语言本质也是基于内存的,像C/C++这种语言是直接基于内存的,没有垃圾回收机制,所以经常造成内存泄漏,然后现在很多高级语言例如Java,Python等都有内存回收机制。)像变量名和数组名都是内存的别名,内存分配是有编译器在编译期所决定,定义数组也必须指定数组的长度,数组的长度也是在编译期所决定的。2.堆是动态内存分配,是程序运行...原创 2019-09-20 19:32:44 · 1132 阅读 · 1 评论 -
为什么程序实际可用内存会远超物理内存?
上一步 CPU 已经找到页表项了,这里存储着物理地址,这才真正找到该虚拟地址所对应的物理页。虚拟地址的低 12 位,刚好可以对一页内的所有字节进行编码,所以我们用低 12 位来代表页内偏移。计算的公式是物理页的地址直接加上低 12 位。前面我们分析的是 32 位操作系统,那对于 64 位机器是不是有点不同呢?在 64 位的机器上,使用了 48 位的虚拟地址,所以它需要使用 4 级页表。它的结构与 32 位的 3 级页表是相似的,只是多了一级页目录,定位的过程也从 32 位的 4 步变成了 5 步。原创 2023-04-19 19:20:19 · 1738 阅读 · 0 评论 -
LMKD分享
LMKD分享原创 2023-04-14 17:50:30 · 1491 阅读 · 0 评论 -
如何用数据观测Page Cache?
如何用数据观测Page Cache?原创 2023-04-07 18:35:35 · 710 阅读 · 0 评论 -
Android LowMemoryKiller概述
Android LowMemoryKiller原创 2023-04-06 22:06:01 · 1368 阅读 · 0 评论 -
进程的哪些内存类型容易引起内存泄漏?
相信你在平时的工作中,应该遇到过下面这些场景:伴随着服务器中的后台任务持续地运行,系统中可用内存越来越少;应用程序正在运行时忽然被 OOM kill 掉了;进程看起来没有消耗多少内存,但是系统内存就是不够用了;……类似问题,很可能就是内存泄漏导致的。我们都知道,内存泄漏指的是内存被分配出去后一直没有被释放,导致这部分内存无法被再次使用,我们平时遇到的内存泄漏可能是应用程序的内存泄漏,也可能是内核(操作系统)的内存泄漏;原创 2023-04-06 20:51:09 · 642 阅读 · 0 评论 -
如何提高LLC(最后一级缓存)的命中率?
如何提高LLC(最后一级缓存)的命中率?原创 2023-04-05 22:26:51 · 1610 阅读 · 0 评论 -
Linux 磁盘I/O是怎么工作的
Linux 磁盘I/O是怎么工作的原创 2023-04-04 15:37:51 · 643 阅读 · 0 评论 -
Linux 文件系统是怎么工作的?
Linux 文件系统是怎么工作的?原创 2023-04-03 22:50:05 · 479 阅读 · 0 评论 -
为什么系统的Swap变高了?
为什么系统的Swap变高了?原创 2023-04-03 21:18:31 · 803 阅读 · 0 评论 -
案例:如何利用系统缓存优化程序的运行效率?
案例:如何利用系统缓存优化程序的运行效率?原创 2023-04-03 19:44:30 · 609 阅读 · 0 评论 -
怎么理解内存中的Buffer和Cache?
怎么理解内存中的Buffer和Cache?原创 2023-04-03 17:45:39 · 1084 阅读 · 0 评论 -
Linux内存基本原理
Linux内存基本原理原创 2023-04-03 15:43:39 · 343 阅读 · 0 评论 -
经常说的 CPU 上下文切换是什么意思?
经常说的 CPU 上下文切换是什么意思?原创 2023-04-02 15:41:50 · 717 阅读 · 0 评论 -
到底应该怎么理解“平均负载”?
到底应该怎么理解“平均负载”?原创 2023-04-01 22:48:45 · 116 阅读 · 0 评论 -
Linux kernel内存分配基础
kernel内存分配基础原创 2023-03-31 15:12:50 · 941 阅读 · 0 评论 -
LZ4 内存压缩算法分析
LZ4 内存压缩算法分析原创 2023-03-28 13:16:01 · 3587 阅读 · 0 评论 -
DMABuffer剖析
Dma buffer分析原创 2023-03-23 00:52:18 · 3991 阅读 · 0 评论 -
Linux内存管理、伙伴系统(buddy system)等知识点
Linux物理内存:伙伴系统(buddy system)原创 2023-01-07 01:14:50 · 1501 阅读 · 0 评论 -
Linux物理内存管理:page、zone、node
Linux物理内存管理:page、zone、node原创 2023-01-06 20:20:11 · 1258 阅读 · 0 评论 -
内存池算法简单剖析
内存池算法简单剖析原创 2023-01-02 22:51:29 · 565 阅读 · 0 评论 -
自定义C++ 容器 内存分配器
自定义C++ 容器 内存分配器原创 2022-12-24 17:40:13 · 566 阅读 · 0 评论 -
动手实现一个小内存管理库
自己动手实现一个小内存管理库原创 2022-12-23 18:46:27 · 1493 阅读 · 0 评论