⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
jemalloc Extension

jemalloc 扩展用 jemalloc 替换了系统的内存分配器。 与其他 DuckDB 扩展不同,jemalloc 扩展是静态链接的,不能在运行时安装或加载。

操作系统支持

jemalloc 扩展的可用性取决于操作系统。

Linux

在Linux上,DuckDB的AMD64(x86_64)发行版附带了jemalloc扩展。 要禁用jemalloc扩展,从源代码构建DuckDB并设置SKIP_EXTENSIONS标志如下:

GEN=ninja SKIP_EXTENSIONS="jemalloc" make

Linux 上的 ARM64 (AArch64) DuckDB 发行版不附带 jemalloc 扩展。 要包含它,请按以下方式构建:

GEN=ninja BUILD_JEMALLOC=1 make

macOS

macOS 版本的 DuckDB 没有附带 jemalloc 扩展,但可以通过从源代码构建来包含它:

GEN=ninja BUILD_JEMALLOC=1 make

Windows

在Windows上,此扩展不可用。

配置

环境变量

DuckDB中的jemalloc分配器可以通过MALLOC_CONF环境变量进行配置。

后台线程

默认情况下,jemalloc的后台线程是禁用的。要启用它们,请使用以下配置选项:

SET allocator_background_threads = true;

后台线程异步清除未完成的内存分配,这样就不需要由前台线程同步完成。这提高了分配性能,在分配密集型工作负载中应该会很明显,尤其是在多核CPU上。