【问题标题】:Exploring Memory Manager探索内存管理器
【发布时间】:2010-05-26 16:12:15
【问题描述】:

想为我们的产品探索一些内存管理器 - boost、loki 中的小型对象分配器和我们公司内部可用的一个内存管理器。

在为我们的产品选择一个之前,我们想探索所有具有小型原型应用程序的选项,这些选项在功能方面不需要与我们的应用程序相似。我的目标是针对不同大小的对象(连续和非连续)的相同数量的分配和释放分析性能和峰值 VM。它应该与 std 容器或 boost 库一起使用。

知道如何进行这样的原型应用程序吗?我们的应用程序不是机器翻译——但未来我们已经计划好了。任何建议都会有很大帮助。像真正的应用程序一样在对象分配方面具有所谓的随机性会很棒。

另外,建议一些其他公共领域可用的内存管理器会很有帮助。我们主要在 Linux 32b 和 64b 上。

【问题讨论】:

    标签: c++ memory-management


    【解决方案1】:

    这是一个奇怪的问题。如果您尝试使用内置在 CRT 中的内存分配器来解决一个非常具体的问题,那么您应该只考虑自定义内存分配器。这应该提供一个直接的方法来测试这个备用分配器:看看它是否解决了这个问题。

    如果您只是因为“听起来是个好主意”而这样做,那就不要这样做。它不是。内置在 CRT 中的已经进行了高度优化。

    【讨论】:

      【解决方案2】:

      我们在不到 2 小时的时间内为我们的系统添加了一个基于 boost 的小型对象分配器。只要您可以访问自己的 malloc/new 内容,就可以轻松实现它。然后,您可以根据自己的项目进行衡量。

      如果做不到这一点,请分析您的应用程序的内存使用情况 - 比如说让它打印出/将所有内存分配记录到一个文件中几分钟或某个大小,然后获取该日志并制作一个只执行这些分配的新应用程序,然后释放(有和没有小对象分配器) - 并且可能在分配器之间计算素数或其他东西以模拟缓存未命中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 2013-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多