问题标签 [jemalloc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
24738 浏览

redis - 运行 make 命令时,Redis 安装失败并显示“需要更新版本的 jemalloc”

运行 make 命令时,在 RHEL 上安装 Redis 失败。下面是输出

0 投票
2 回答
948 浏览

c++ - jemalloc 未检测到内存损坏

以下程序不会触发断言失败:

当我运行程序时 MALLOC_CONF="quarantine:32,abort:true,stats_print:true" ex_stats_pr

我得到:

有没有办法用 jemalloc 触发中止失败?

0 投票
0 回答
107 浏览

redis - 构建redis rpm时不断出错

当我尝试为 redis-3.2.3 构建我的 rpm 时,即使文件在那里,我也会收到以下错误:

0 投票
1 回答
2030 浏览

memory-leaks - jemalloc 堆分析是否仅跟踪分配?

我正在尝试解决一些内存泄漏,并且我正在使用 jemalloc 转储堆配置文件: MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17

很有魅力,但我不知道我在看什么:)

jemaloc堆分析是否显示所有(采样的)分配,或者只是那些在转储时没有被 free()-ed 的分配?或者换一种说法:它是分配配置文件,还是“实时”块配置文件?

0 投票
1 回答
454 浏览

c++ - 获取jemalloc中每个内存分配的bin大小

我运行一个使用 jemalloc 作为内存分配器的 c++ 程序,它将大块预先划分为预定义大小的小块(即 1、2、4、8、...字节)

即使我要求分配 110 字节的内存,它也会返回一个容量为 128 字节的内存。

在我的程序中,我跟踪动态分配的内存量(具有高度多样化的大小)并限制线程的内存分配以避免 OutOfMemory 崩溃。

但是,由于请求的大小与授予的实际大小之间存在差异,我无法准确计算动态分配的字节数。

是否有任何“jemalloc”API 接收请求大小作为输入并提供实际分配大小作为输出?

谢谢

0 投票
1 回答
1035 浏览

c++ - Jemalloc的内存在使用新的线程池而不重启服务后增加了很多

背景:我正在研究一个搜索引擎,并开发一个新功能,它将创建一个新的线程池(32 个线程)。符合某些规则的查询将由新的线程池执行。同时,旧的线程池(也有 32 个线程)可能仍然有效,并且会执行其他查询。

问题:我们使用 Jemalloc 进行内存分配。当我们启用新功能并且新线程池开始工作时,Jemalloc 消耗的内存在 4~5 小时内从 80GB 增加到 95GB,然后在 2 小时内下降。我查看了 Jemalloc 的统计数字,增加的内存全部来自“stats.mapped”(由 Jemalloc 分配)。“stats.active”和“stats.allocated”(由我们的服务消耗)保持不变,这意味着增加的内存可能来自内存碎片。

以下是“stats.mapped”、“stats.allocated”和“stats.active”的定义:

  1. JeMalloc 映射字节:分配器 (Jemalloc) 映射的活动块中的总字节数(默认为每个块 4MB)。这是块大小的倍数,并且大于 JeMalloc Active Bytes。这不包括不活动的块,即使是那些包含未使用的脏页的块,这意味着 this 和 stats.resident 之间没有严格的顺序。
  2. JeMalloc Active Bytes:应用程序(我们的服务)分配的活动页面中的总字节数(默认为每页 4 KB)。这是页面大小的倍数,并且大于或等于 stats.allocated。这不包括 stats.arenas..pdirty,也不包括完全用于分配器元数据的页面。
  3. JeMalloc Allocated Bytes:应用程序(我们的服务)分配的字节总数。

由于内存增加太大(从 80GB 到 95GB),我们希望在启用我们的功能时减轻内存影响,您对上述问题(Jemalloc 的内存碎片)有什么建议吗?谢谢!

我曾尝试禁用 tcache,但启用新功能时内存仍会增加。

内存变化图

0 投票
3 回答
3181 浏览

ruby - 使用 jemalloc 安装 ruby​​ 时出错

我在 ubuntu 12.04.5 LTS 上并尝试使用 jemalloc 安装 ruby​​。jemalloc 安装成功(https://blog.scalingo.com/2017/05/02/improve-ruby-application-memory-jemalloc.html)但是在安装 ruby​​ 2.3.4 时,它给出了以下错误。

有没有人遇到过或者有经验的,求帮助。

0 投票
1 回答
1072 浏览

java - Java 本机内存泄漏与 G1 和巨大的内存

我们目前遇到了 java 本机内存泄漏的问题。服务器相当大(40cpus,128GB 内存)。Java 堆大小为 64G,我们运行一个非常占用内存的应用程序,使用大约 400 个线程将大量数据读取到字符串中,并在几分钟后将它们从内存中丢弃。

所以堆很快就被填满了,但是堆上的东西已经过时了,也可以很快被 GC 处理。所以我们必须使用 G1 来避免 STW 休息几分钟。

现在,这似乎工作正常 - 堆足够大,可以运行应用程序数天,这里没有泄漏。无论如何,Java 进程会随着时间的推移不断增长,直到所有 128G 都被使用并且应用程序因分配失败而崩溃。

我已经阅读了很多关于本机 java 内存泄漏的内容,包括 max 的 glibc 问题。arenas (我们对 glibc 2.13 有喘息,因此在没有 dist 升级的情况下设置 MALLOC_ARENA_MAX=1 或 4 无法修复)。

所以我们尝试了 jemalloc,它给了我们图表:

使用空间使用空间

使用对象使用对象

我不明白这是什么问题,有人有想法吗?

如果我将 jemalloc 的 MALLOC_CONF="narenas:1" 设置为运行我们的应用程序的 tomcat 进程的环境参数,那仍然可以以某种方式使用 glibc malloc 版本吗?

这是我们的 G1 设置,这里可能有些问题?

谢谢你的帮助!

0 投票
0 回答
143 浏览

objective-c++ - 命令行 Objective-C++ 工具已开始在 [NSApplication sharedApplication] 中崩溃

我有一个用于复制和粘贴图像的小 CLT,用 Objective-C++ 编写。直到最近,这个程序才按预期编译和运行——但似乎只是现在,它在调用[NSApplication sharedApplication].

堆栈跟踪表明崩溃发生在NSApplication初始化NSUserDefaults实例时,该实例最终调用了一个CFDictionary-related 函数(即CFDictionarySetValue),然后该函数在free... 但从inside 中崩溃libjemalloc

这是一个示例堆栈跟踪:

…最后一点是最好奇的,因为我没有使用 JeMalloc 库。我的 CLT 程序和构建它的库 都与 JeMalloc 没有任何关系,并且构建系统目前根本不引用它。在任何时候,我都不包含 JeMalloc 库中的任何内容或链接到 JeMalloc 库的任何内容。

但是:从堆栈跟踪来看,我正在使用的 CoreFoundation 库实际上是在使用 JeMalloc。

我对 JeMalloc 了解不多,但我相信它为 and 提供一个全局的替代品mallocfree(除了提供大量自定义的、细粒度的内存管理功能)。

我的调用[NSApplication sharedApplication](如上面堆栈跟踪的第 18 行所示)如下所示:

任何人都可以对此有所了解吗?什么可能导致该程序以这种方式崩溃(特别是最近在 CoreFoundation 中可能发生了什么变化)?

0 投票
1 回答
1390 浏览

malloc - 使用 jemalloc、malloc、calloc 和其他常见替代方案的优缺点是什么?

今天阅读Rust subreddit,我看到以下评论:

jemalloc 针对(多线程)速度进行了优化,而不是内存使用

在做了更多的研究之后,我发现还有更多的选择(比如 calloc)。

我想了解不同内存分配器的优缺点是什么?

如果这个问题看起来很愚蠢,那么我的背景主要是解释语言(它不会暴露如此精细的内存控制)。