C/C++ 配置 jemalloc 的一些选项,处理一些疑似内存泄漏的问题。

news2024/11/24 10:31:48

在 jemalloc 之中有三种配置 jemalloc 选项的一些方式。

1、修改选项代码默认值(重新编译)

2、修改环境变量 MALLOC_CONF,并重启应用程序

注意:

        仅支持 opt. 节配置选项

     export MALLOC_CONF="retain:true,dirty_decay_ms:25000,muzzy_decay_ms:30000"

3、通过 mallctl 宏函数获取或修改(展开:je_mallctl)

newp 及 newlen 值非空表明设置。 

int mallctl(    const char *, name
     void *, oldp
     size_t *, oldlenp
     void *, newp
     size_t newlen);

例子:

    ssize_t dirty_decay_ms;
    ssize_t muzzy_decay_ms;

    size_t sz = sizeof(ssize_t); 
    mallctl("opt.dirty_decay_ms", reinterpret_cast<void*>(&dirty_decay_ms), &sz, NULL, 0);
    mallctl("opt.muzzy_decay_ms", reinterpret_cast<void*>(&muzzy_decay_ms), &sz, NULL, 0);

在JEMALLOC之中,重要选项为:

1、dirty_decay_ms     脏页延迟回收时间(已使用过的)

2、muzzy_decay_ms 脏页延迟回收时间(未使用过的)

3、background_thread:true 可开启后台线程回收

重要提示:

dirty_decay_ms、muzzy_decay_ms 两个值均设置为0,可以减少 jemalloc 对于持续内存的占用率,否则会易于产生疑似内存泄漏的一些现象,令人感到困惑。

并且每个线程都会单独管理 arena,每个 arena 都有一个 tick 引用计数,当引用计数不为0时,arena 不会自动释放,那么看上去似乎发生内存泄漏了,除非适用 arena 的线程退出。

在 Google Android 10 的源代码之中:

jemalloc、dirty_decay_ms; muzzy_decay_ms 两个值均被设置为0,这代表或许并不存在脏页释放延迟的问题,那么大家直接设置为0,就可以了。

可以直接参考最新 Android 源代码主干上填写的默认参数:

include/jemalloc/internal/arena_types.h - platform/external/jemalloc_new - Git at Google (googlesource.com)

/* Default decay times in milliseconds. */
#if defined(__ANDROID__)
#define DIRTY_DECAY_MS_DEFAULT	ZD(0)
#define MUZZY_DECAY_MS_DEFAULT	ZD(0)
#else
#define DIRTY_DECAY_MS_DEFAULT	ZD(10 * 1000)
#define MUZZY_DECAY_MS_DEFAULT	ZD(10 * 1000)
#endif

参考资料:

JEMALLOC.3 DOCUMENT

Maybe a terrible bug in the multi-threaded usage scenario · Issue #1497 · jemalloc/jemalloc (github.com)

Default value of muzzy_decay_ms in jemalloc 5.2.1? · Issue #1827 · jemalloc/jemalloc (github.com)

Disable muzzy decay by default. by interwq · Pull Request #1421 · jemalloc/jemalloc (github.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1588415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客 NC252 多数组中位数【中等 模拟 Java,Go】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/b6bb0bce88894108bfc23e9b7b012420 思路 模拟&#xff0c;2数组合并一个数组helphelp长度为奇数&#xff0c;直接取中间值&#xff0c;为偶数&#xff0c;中间2个值&#xff0c;哪个小返回哪个参考答案Java imp…

LightM-UNet:Mamba 辅助的轻量级 UNet 用于医学图像分割

摘要 https://arxiv.org/pdf/2403.05246.pdf UNet及其变体在医学图像分割中得到了广泛应用。然而&#xff0c;这些模型&#xff0c;特别是基于Transformer架构的模型&#xff0c;由于参数众多和计算负载大&#xff0c;使得它们不适合用于移动健康应用。最近&#xff0c;以Mamb…

Unity-超级方便的Excel 读写插件

超级无敌棒棒糖&#x1f58c; &#x1f32d;功能介绍&#x1f355; Demo&#x1f333;准备一个数据类&#x1f333;准备一个Excel&#x1f333;导入Excel&#x1f333;行数据自动转换&#x1f333;导出到Excel &#x1f371;新增映射字段类型 &#x1f32d;功能介绍 &#x1f…

护眼台灯品牌哪个好?2024五大护眼台灯排行榜分享

​护眼台灯作为家庭中常见的照明工具&#xff0c;其存在几乎成为了现代生活的标配。家长们往往会为孩子购置一台&#xff0c;供学习和阅读使用&#xff1b;同时&#xff0c;它也是学生和办公人员在夜晚工作学习的必备之物。然而&#xff0c;市面上的一些普通台灯可能存在着种种…

Day17_学点JavaEE_转发、重定向、Get、POST、乱码问题总结

1 转发 转发&#xff1a;一般查询了数据之后&#xff0c;转发到一个jsp页面进行展示 req.setAttribute("list", list); req.getRequestDispatcher("student_list.jsp").forward(req, resp);2 重定向 重定向&#xff1a;一般添加、删除、修改之后重定向到…

什么是企微文档?怎样搭建企微文档?

企微文档作为一种高效、便捷的协作工具&#xff0c;已经有越来越多企业的在使用。那么&#xff0c;什么是企微文档&#xff1f;我们又该如何高效搭建企微文档呢&#xff1f;这就是我们今天要来探讨的问题。 | 什么是企微文档 简单来说&#xff0c;企微文档就是企业微信平台上的…

时光清浅,百事从欢

裙身主图案采用寓意丰富的石榴印花石榴花开红火&#xff0c;枝叶茂盛恰好契合“时来运转”的主题希望宝贝们都能如石榴般坚韧生长&#xff0c;好运连连裙型设计深蕴国风美学&#xff0c;融合现代剪裁工艺将古典韵味与时尚元素完美交融领口处巧妙运用中式立领设计既保留了传统服…

PHP学习

&#xff08;外文名:PHP: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本预处理器”&#xff09;是一种通 用开源脚本语言。语法吸收了C语言、Java和Perl的特点&#xff0c;利于学习&#xff0c;使用广泛&#xff0c;主要适用 于 Web开发 领域。用PHP做出的动…

Python基于Django的微博热搜、微博舆论可视化系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Mongodb入门--头歌实验MongoDB 文档的高级查询操作

数据库存储了大量的数据&#xff0c;当我们需要特定的数据时就要使用查询方法&#xff0c;根据一定的条件&#xff0c;筛选出我们想要的数据&#xff0c;前一章我们简单介绍了条件操作符&#xff08;<、<、>、>、!等&#xff09;&#xff0c;在这一章中我们将更全面…

数字乡村可视化大数据-DIY拖拽式设计

DIY拖拽式大数据自由设计万村乐可视化大数据V1.0 随着万村乐数字乡村系统的广泛使用&#xff0c;我们也接收到了客户的真实反馈&#xff0c;最终在公司的决定下&#xff0c;我们推出了全新的可视化大数据平台V1.0版本&#xff0c;全新的可视化平台是一个通过拖拽配置生成可视化…

springboot+vue高校贫困生资助勤工俭学管理系统python

本次开发一套贫困生资助管理系统有管理员和用户两个角色。管理员功能有个人中心&#xff0c;学生管理&#xff0c;院校管理&#xff0c;贫困申请管理&#xff0c;资助项目管理&#xff0c;资助申请管理&#xff0c;资助发放管理&#xff0c;勤工俭学管理&#xff0c;岗位申请管…

海外媒体发稿:新加坡 Asia One VS新加坡sg雅虎

海外媒体发稿&#xff1a;新加坡 Asia One VS新加坡sg雅虎 新加坡&#xff1a;雅虎 官网&#xff1a;sy.yahoo.com 官网&#xff1a;asiaone.com/lite 亚洲第一站。是 新加坡的新闻和生活方式网站和新闻聚合器。它是 新加坡第一个纯数字 内容平台&#xff0c;主要为新加坡、…

下线圈和包扎

电机槽内放好 所有槽纸 槽内再放入引槽纸 作用是放线圈的时候避免划伤线 开始放线圈 绑了白色扎带的朝外面 线圈的一边放进去后&#xff0c;另一边还悬在外面 &#xff0c;这里俗称 吊边。 为了保护吊边 &#xff0c;在吊边处放一张大的绝缘纸 &#xff08;如下图&#xff0…

详细介绍微信小程序app.js

这一节&#xff0c;我们详细介绍app.js 这个文件。这个文件的重要性我就不再赘述&#xff0c;前面已经介绍了。 一、app.js是项目的主控文件 任何一个程序都是需要一个入口的&#xff0c;就好比我们在学c的时候就会有一个main函数&#xff0c;其他语言基本都是一样。很明确的…

CST软件中变更求解器和宏的使用技巧【操作教程】

变更求解器 变更CST MWS中的Solver&#xff01; Home > Simulation > Setup Solver CST Microwave Studio (CST MWS)总共有六个Solver。用户根据仿真目的和应用方向选择合适的Solver&#xff0c;才可以快速获得准确的结果。变更或选择Solver时&#xff0c;在Setup Sol…

LeetCode-Java:6.Z字形变换

文章目录 题目解① 找规律 题目 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R之后&a…

强化学习基础概念入门

文章目录 1. 什么是强化学习&#xff1f;2. 强化学习的基本元素3. 相关衍生元素3.1 策略(Policy)3.2 状态转移(State Transition)3.3 回报(Return)3.4 价值函数(Value Function) 4. 算法分类4.1 按环境是否已知划分4.2 按学习方式划分4.3 按学习目标划分 参考资料 1. 什么是强化…

C语言 函数——代码风格

目录 基本的代码规范 程序版式 对齐&#xff08;Alignment&#xff09;与缩进&#xff08;indent&#xff09; 变量的对齐规则 空行——分隔程序段落的作用 代码行内的空格——增强单行清晰度 代码行 长行拆分 标识符命名规则 标识符命名的共性规则 windows应用程序…

ELK-Kibana 部署

目录 一、在 node1 节点上操作 1.1.安装 Kibana 1.2.设置 Kibana 的主配置文件 1.3.启动 Kibana 服务 1.4.验证 Kibana 1.5.将 Apache 服务器的日志&#xff08;访问的、错误的&#xff09;添加到 ES 并通过 Kibana 显示 1.6. 浏览器访问 二、部署FilebeatELK&…