分代回收算法是一种用于回收垃圾对象的算法。

针对生命周期不同的对象采取不同的回收策略。

例如:

  • 对于朝生暮死的对象放到A区域,且对A区域使用复制算法。
  • 对于寿命比较长的对象放到B区域,且对B区域使用标记-清除算法。
学习笔记 > 垃圾回收(GC)

增量回收算法

增量回收算法是一种用于回收垃圾对象的算法。

每次执行只会执行一部分回收工作。

并发回收算法

并发回收算法是一种用于回收垃圾对象的算法。

通常会和增量回收算法一同使用。

让GC和应用程序交替执行。

优点是避免了回收期间应用程序长时间的停顿。

缺点是因为频繁切换上下文导致系统吞吐量下降。

学习笔记 > 垃圾回收(GC)

标记-压缩算法是一种用于回收对象的算法。

标记-压缩算法会将存活的对象移动到内存的一端,然后直接清理掉其它内存空间。

优点是避免了复制算法中内存折半的缺点,并且也不会产生内存碎片。

缺点是如果存活的对象比较多移动对象的开销依旧会很大。

学习笔记 > 垃圾回收(GC)

复制算法是一种用于回收对象的算法。

  1. 将内存分为两块,每次只使用一块。
  2. 回收时将无需回收的对象拷贝到另一个内存块中。
  3. 然后回收当前内存块的所有对象。

优点是回收后不会产生内存碎片。

缺点是可用内存折半,而且存活的对象较多时复制对象的开销会很大。

学习笔记 > 垃圾回收(GC)

标记-清除算法是一种用于回收的对象的算法。

标记-清除算法的分为两个阶段:

  • 标记:标记需要回收的对象。
  • 回收:回收需要的对象。

优点是简单。缺点是容易产生大量的内存碎片,降低内存利用率。

学习笔记 > 垃圾回收(GC)

概述

官方网站:https://mpv.io/
开源主页:https://github.com/mpv-player/mpv
官方文档:https://mpv.io/manual/stable/

mpv是基于MPlayer和mplayer2的媒体播放器。

支持各种视频文件格式、音频和视频编解码器以及字幕。

媒体来源也不仅限于本地,如URL等。

根据平台的不同,支持各种不同的视频和音频输出方法。

不过重点是提供了它提供了C语言的库——libmpv,可以让我们将mpv嵌入到自己的程序中。

项目分享
Github