堆内存为何如此缓慢?深入剖析 | Core Dumped

合集 · Core Dumped (28)

  1. 13:09
    为什么应用程序只能运行在特定操作系统上? | Core Dumped
  2. 19:36
    内核到底在哪结束?一个从未被解释清楚的问题 | Core Dumped
  3. 14:51
    为什么程序不能互相访问内存?硬件如何保护系统 | Core Dumped
  4. 13:04
    CPU里的隐藏绝技:位运算究竟如何工作? | Core Dumped
  5. 17:42
    编程术语的历史渊源:今天我们还在用的词从哪来? | Core Dumped
  6. 18:41
    硬件指令如何让多线程编程不再噩梦? | Core Dumped
  7. 22:08
    解析表达式的高效算法:Pratt Parsing详解 | Core Dumped
  8. 18:35
    信号机制:让Ctrl+C做任何你想做的事 | Core Dumped
  9. 13:36
    为什么Python正在移除GIL?并行编程的瓶颈即将消失 | Core Dumped
  10. 18:25
    为何底层项目里全是这种古怪代码? | Core Dumped
  11. 19:32
    为什么有些项目要同时使用多种编程语言? | Core Dumped
  12. 10:17
    那次我不得不使用链表 | Core Dumped
  13. 21:20
    底层探秘:ArrayList与LinkedList内存对决 | Core Dumped
  14. 19:05
    80年代的竞态条件避免算法,为何失败了? | Core Dumped
  15. 12:09
    计算机如何将字符串转换为数字?完整过程解析 | Core Dumped
  16. 13:15
    多任务时,硬件如何辅助软件切换上下文? | Core Dumped
  17. 17:53
    堆内存为何如此缓慢?深入剖析 | Core Dumped
  18. 17:51
    Linux创建进程的方式有多奇葩? | Core Dumped
  19. 14:22
    CPU的“前进”指令,竟是时钟在指挥? | Core Dumped
  20. 8:08
    程序≠进程:别再搞混了 | Core Dumped
  21. 19:49
    CPU是如何运行函数的?底层原理揭秘 | Core Dumped
  22. 16:58
    内存如何记住数据?晶体管层面的原理 | Core Dumped
  23. 45:02
    揭秘让电脑反应更丝滑的CPU调度算法 | Core Dumped
  24. 11:27
    多核CPU的线程是如何运作的? | Core Dumped
  25. 18:09
    电容存数据有多不靠谱?但DRAM还是这么干了 | Core Dumped
  26. 23:28
    CPU是如何与千奇百怪的设备交互的? | Core Dumped
  27. 14:28
    晶体管是如何执行代码的? | Core Dumped
  28. 19:51
    为什么Windows装软件需要安装程序,而macOS不用? | Core Dumped
Description
来源:https://www.youtube.com/watch?v=ioJkA7Mw2-U
原标题:WHY IS THE HEAP SO SLOW?
频道:Core Dumped
发布时间:2024-02-24

内容简介:
本期视频深入探讨了令许多开发者心生畏惧的内存区域——堆。堆虽然必不可少,但其性能常遭诟病。视频从内存布局讲起,通过对比栈与堆的访问机制差异,揭示了堆操作缓慢的根本原因:它必须频繁依赖系统调用(如brk和mmap)向操作系统申请更多内存,这一过程涉及复杂的内核管理、页表映射和碎片整理,开销远高于简单移动指针的栈操作。理解这些底层原理,有助于我们编写更高效的代码。


时间轴:
00:00 引言
01:32 系统调用
05:23 内存布局
16:05 堆内存为何如此缓慢

Comments

蓝色的流星雨- 2026-06-06

堆的快慢自然在于你有没有启用虚拟内存,用的是 malloc,brk 还是 mmap,分配内存有没有上锁。假如是最简单的情况,单线程 forth allot,那比栈还快,没有什么堆比栈慢的说法。像 Java zgc,每个线程一个独立分配区域,使用 bump 的形式分配,那分配速度自然和存在溢出保护的栈一样快。更多内容可以参考经典论文《Garbage Collection Can Be Faster Than Stack Allocation》

♥ 12

4BIT 2026-08-19

只要在tlb里面,缓冲有预读,一样快.