mimalloc

通用内存分配器
授权协议 MIT
开发语言 C/C++
所属分类 应用工具、 操作系统工具
软件类型 开源软件
地区 不详
投 递 者 赵俊远
操作系统 跨平台
开源组织 微软
适用人群 未知
 软件概览

mimalloc (发音 "me-malloc") 是具有出色性能特征的通用内存分配器。 最初由Daan Leijen开发,用于Koka和Lean语言的运行时系统。

mimalloc 用于替代  malloc  可在不对代码做任何改变下进行替换,例如:

> LD_PRELOAD=/usr/bin/libmimalloc.so  myprogram

性能比对:

Memory usage:

 

  • 最近实现一个多线程内存池,所以看了很多开源的代码,其中微软的mimalloc无论从性能和代码量上有表现得很好,其实验数据表明相比于jemalloc、tcmalloc等实现大约快了10%,所以这里对其使用做个简单的介绍,具体原理可以研读论文和参阅其他专家的博客。 mimalloc的开源库地址:https://github.com/microsoft/mimalloc 虚拟内存是和进程相关的,进程中的

  • 最近发现一个C++的json解析库yyjson,刚好未来也可能有这方面的需求,所以就试用了一下。简单易用,效果也不错。但是看了源码发现内存分配使用的是系统默认的stdlib.h,所以就想替换为mimalloc,看看效果如何。 为了尽量兼容之前的代码,所以mimalloc选择使用mimalloc-override.h,已经把mimalloc的函数替换为了stdlib.h的函数,一般使用的话,直接把s

 相关资料
  • 我想了解为什么多次动态分配调用的数据比直接在代码中指定的或通过的单个调用分配的数据使用如此多的内存。 例如,我用C编写了以下两个代码: 测试1.c:int x用malloc分配 我在这里没有使用free来保持简单。当程序等待交互时,我查看另一个终端中的顶级功能,它向我显示了以下内容: test2. c: int x不是动态分配的 顶部显示: 我还编写了第三个代码,其结果与test2相同,我在tes

  • 问题内容: 这是一篇受此评论启发的帖子,内容涉及如何在CPython中为对象分配内存。最初,这是在创建列表并将其添加到for循环中_以_ 实现列表理解的上下文中。 所以这是我的问题: CPython中有多少个不同的分配器? 每个功能是什么? 什么时候被正式称为?(根据此评论中的内容,列表理解可能不会导致调用, python在启动时会为其分配多少内存? 是否有规则来控制哪些数据结构在此存储器上首先获

  • 我有一个一直在思考的问题。以这个特殊的类为例 假设我有一个B类,它拥有一个使用listOne读取详细信息的方法。要查看数组列表,我需要首先获取列表的大小,以便我的代码知道数组列表何时结束。有两种方法可以做到这一点,一种是 或者我也可以用 在内存和效率方面,哪种方法更好?此外,假设我正在递归地读取一个非常大的数组。为了简单起见,让我们假设递归读取此数组将导致堆栈溢出异常。在这种情况下,第一个方法在理

  • 我开发了kervel驱动程序,并与dell进行了通信。尝试做一个快照功能和行走功能 我的结构是 在我的快照函数中,我这样做。 在walk函数中,我执行以下操作 当我在我的驱动程序条目中(当驱动程序加载时)使用这个函数时,所有的工作都很好。但当我从dll中调用它时,只有2秒钟的时间“Word Fine”,然后我就会出现蓝屏。 当我尝试从SM_MSI结构中删除Name变量时,所有工作都很完美。!!所以

  • 我正在尝试使用我的GPU而不是CPU来训练一个自定义的对象检测模型。我遵循了以下教程中给出的所有说明:https://tensorflow-object-detection-api-tutorial.readthedocs.io/ 我已经测试了我的软件,一切都已安装并正常工作。 目前正在使用: Windows 10 但问题是,在训练几秒钟后,它停止使用GPU,并发出以下警告消息。 此外,我没有在我

  • 我想知道何时或是否必须删除此对象。下面是一个基本类对象Object.cpp的构造函数: 我知道在分配内存时,你应该在某个时候删除它,但是我在构造函数中分配了内存,并且想再次使用变量1和2,我什么时候删除它们?