- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在评估 Protobuf Arena 分配以与非 protobuf 相关的类一起使用。就像一个从内存池中轻松分配/释放对象的工具。
我没有在它的 API ( https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.arena#Arena) 中找到指定竞技场使用的最大内存的方法。我想限制内存使用量并允许使用 Arena 的程序死掉,而不是消耗比预期更多的内存。
是否还有其他值得检查的用于内存池管理的 C++ 库? Protobuf arena 非常易于使用,这就是我开始使用它的原因。
最佳答案
没有真正的内置功能来限制内存使用,但我相信您可以通过在 ArenaOptions 上设置正确的 Hook 来实现相同的结果。 .您可能希望特别设置 on_arena_init
和 on_arena_allocation
Hook 。在 on_arena_init
中,您可以创建一个对象来存储您的状态(可能只是到目前为止分配的字节数的计数器)并将其作为 void*
返回。然后每次 Arena 需要分配更多内存时,它会调用你的 on_arena_allocation
钩子(Hook)并将你的 void*
作为 cookie
参数传递,所以您可以更新您的大小计数器并断言它低于您指定的内存上限。请注意,这将跟踪 Arena 从系统分配器获取的内存块,而不是 Arena 分发给应用程序代码的内存块,但听起来这可能是您想要的行为。您可能还需要设置 on_arena_reset
和 on_arena_destruction
Hook :前者将计数器重置为零,后者删除 cookie 以避免内存泄漏。
关于c++ - Protocol Buffer : Maximum memory size for the Arena,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39592450/
使用 bull-arena: "^3.2.2"版本。在启动竞技场仪表板时遇到此错误 TypeError: as of 3.0.0, bull-arena requires that the queue
使用 bull-arena: "^3.2.2"版本。在启动竞技场仪表板时遇到此错误 TypeError: as of 3.0.0, bull-arena requires that the queue
http://stackoverflow.com/questions/11276668/mac-os-does-not-open-topcoder-arena-to-open上有同样的问题,但我无法解
const int size = 50000; char pool[size]; int freeMemory(void) { int freemem = 0; for(int i = 0; i <
我有一个使用 Arena 的结构: struct Foo { a: Arena, // from the typed-arena crate v: Vec, } 只要受主结构体生命周期
我无法在我的 Mac 上运行 topcoder arena.. 当我尝试从 safari 登录 topcoder 时,它说找不到 Java。 所以我下载了.jnlp...但仍然无法运行 这是我的 Ja
我有一个包含字符串字段的结构。我想控制字符串的内存分配方式。特别是,我想使用类似 copy_arena 的方式来分配它们。 . 也许我可以制作自定义 ArenaString 类型,但我不知道如何将对
当我在 MRuby 代码中进行救援时,我收到此错误: arena overflow error 我不熟悉这个术语以及如何解决它。这是我的 C 程序的示例: while (true) { SDL_E
我正在评估 Protobuf Arena 分配以与非 protobuf 相关的类一起使用。就像一个从内存池中轻松分配/释放对象的工具。 我没有在它的 API ( https://developers.
我尝试安装一个名为 EclipseCoder 的插件以通过 Eclipse(用于 c/c++)运行 Topcoder arena,但它不起作用并抛出错误。我做了以下。 我为 C/C++ 安装了 Ecl
我在 topcoder 网站上注册,然后继续下载该小程序。发生的情况是我无法安装它,它说 your security settings have blocked an application wi
我正在运行带有最新版本 Java 的 Mac OX 10.7.4。我想访问 TopCoder 的竞技场,所以我下载了 .jnlp 并尝试打开它。但是,我不断收到一条错误消息,指出该应用程序未签名。我附
任何对 glibc malloc 代码有一些基本想法的人都可以告诉我如何遍历所有 arenas 并找出哪些块没有被释放,即它们的 inuse 位已设置。这是我在退出进程时必须做的。 或者 更确定的是,
在过去一周左右的时间里,我一直在调查内存使用量随时间累积的应用程序中的问题。我将其缩小到复制 a std::vector > > > > > 在工作线程中(我意识到这是一种组织内存的荒谬方式)。定期地
在针对在 ECS/EC2/Docker/Centos7/Tomcat/OpenJDK8 环境中运行的 Java Web 应用程序进行性能测试时,我观察到 JVM 内存中有一个大的离散峰值。 性能测试非
在 OpenBSD 上使用命令“ksh all.bash”编译 golang 时出现错误“无法保留 arena 虚拟地址空间”(也尝试过 make.bash 但没有成功)。这是输出: $ ksh al
我是一名优秀的程序员,十分优秀!