垃圾收集器的必备基础

课程简介

这门课程教你关于自动内存管理的技术

课程介绍:English 繁中

从这 2 小时的课程,你会学到

  • 电脑程序自动内存管理背后的算法和数据结构
  • 内存管理历史: 静态,堆栈,Heap allocations
  • 虚拟内存和内存布局
  • 追踪与直接收集器的比较
  • 语义( Semantic )与语法( Syntactic )垃圾的比较
  • Mark-Sweep 收集器
  • Mark-Compact 收集器
  • 参考计数收集器
  • 复制收集器
  • Generational 收集器
  • 平行的、增量的、并发( Concurrent )的收集器
  • 三色抽象化( Tri-color abstraction )与标记
  • 垃圾收集器的障碍

要求

  • 基本的数据结构和算法(树、图、链表等)
  • 关于电脑内存的基本知识(字节、地址、指针)

课程说明

垃圾收集器的必备基础

内存泄漏( Memory leaks ) 和迷途指针( dangling pointers )是手动内存管理的主要问题。 你在链表中删除了父节点,却忘了先删除它的所有子节点ーー你的内存正在泄漏。 你以正确的顺序删除一个对象链ー但是突然你的程序崩溃了,因此你忘记了这个资源的第二个所有者,这个资源现在试图取消参考( dereference ) 一个空指针( null-pointer )。

为了避免这些问题,大多数现代高端编程语言实现了自动内存管理。 你可以手动分配对象的内存,但是不必担心它们的释放: 一个特殊的程序,垃圾收集器,知道如何正确地自动释放对象,并回收它们以供将来重复使用。

在“垃圾收集器必备基础”课程中,我们学习了与自动内存管理相关的所有不同的技术和算法,这些技术和算法现在已经在实践中得到了应用。

这门课是给谁上的?

首先,针对编译器工程师

在实现编程语言时,很有可能需要实现一个垃圾收集器。 即使最初定位为“内存安全”的语言,如 Rust,最终也实现了自动参考计数(ARC)和其它收集器。

重申一下: 在大多数现代高端编程语言中,垃圾收集器模块(或多个 GC 模块,比如 Java)现在基本上是必需的。

如果实现编程语言不是我每天的工作?

如果你不是一个编译器工程师,那么这个课程对你来说仍然是有趣的。 总的来说,实现垃圾收集器或内存管理器是一项相当高端的工程任务。 这是一个简单的技巧: 你参与一些复杂的项目(如垃圾收集器、编译器、解释器等) ,在构建它时,你将学习所有不同的数据结构和算法。 然后回到“每日编程” ,得到能力上的提升以成为一个更好的工程师,掌握了复杂系统的可转移通用知识。

这个项目我需要熟悉 C 还是 C++ ?

也不尽然! 当然,C 和 C++ 可能是最适合原始内存操作的语言,并且在这里非常适合,但是在课程中我们学习通用设计算法,主要关注垃圾收集器和内存分配器的理论方面。 这意味着你可以用任何你想要的语言来实现它们。 例如,你可以在 JavaScript 中为一个虚拟 Heap 分配一个 ArrayBuffer,或者类似的在 Python、 Rust 等中分配一个 bytearray。

本课程中的大多数算法都是用泛型伪代码( generic pseudo-code )描述的,因此你可以将它们移植到任何语言中。

这门课的具体内容是什么?

这些讲座的主要内容是:

  • 简明扼要,直奔主题。 每个讲座是自给自足的,简洁,并描述信息直接相关的主题,没有不相关的材料或谈话分散注意力。
  • 动画演示文稿结合现场编辑笔记。 这使得理解主题更加容易,并显示如何(以及何时)链接对象结构。 静态的幻灯片根本不适用于复杂的内容。

阅读材料

作为本课程的进一步阅读和补充文献,推荐以下书籍:

The Garbage Collection Handbook: The Art of Automatic Memory Management (Chapman & Hall/CRC Applied Algorithms and Data Structures series)

The Compiler Design Handbook: Optimizations and Machine Code Generation, Second Edition

目标受众

  • 编译器工程师
  • 所有好奇的工程师,愿意实现一个复杂的项目来学习不同的内存管理算法(通用知识可以转移到其他系统)

讲师简介

Dmitry Soshnikov Facebook 软件工程师

Dmitry Soshnikov 是一名软件工程师,也是一名有不同于计算机科学主题的讲师。

他对教育充满热情,注重高品质的教育内容: 简明扼要,并使用现场编辑笔记的动画讲座。

你会从 Dimitry 的课程学到:

  • 编译器和解释器: 创建一个编程语言
  • 垃圾收集器(自动内存管理)
  • 编程语言理论
  • Automata Theory: Building a RegExp machine
  • 自动机理论: 创建一个 RegExp 机器
  • 解析器理论: 实现一个编译器编译程序

英文字幕:有

  • 想要了解如何将英文本幕自动翻译成中文? 请参考这篇 How-To

优惠信息

如何购买这门课程比较划算?可以参考课程合购优惠方案


报名参加课程

Sponsored by Udemy

也许你会有兴趣

 欢迎使用e-mail订阅 Soft & Share 

发表评论

Powered by WordPress.com.

Up ↑

%d 博主赞过: