【问题标题】:JVMTI Allocate/Deallocate and malloc/freeJVMTI Allocate/Deallocate 和 malloc/free
【发布时间】:2021-09-22 06:55:41
【问题描述】:

是否可以在一个 JVMTI 代理中同时由 JVMTI Allocate/Deallocate 和 malloc/free 管理内存?

我知道我无法释放由 JVMTI Allocate 分配的内存 free 并且不使用 JVMTI Deallocate 来释放由 malloc 分配的内存。

我的猜测是它可以工作,因为 malloc 从操作系统获取内存,如有必要,我假设 JVMTI Allocate 做了类似的事情。由此我得出结论,JVMTI Allocate/Deallocate 和 malloc/free 不会相互干扰。

背景:我有一些使用 malloc/free 的库,我想在我的 JVMTI 代理中使用它们。

【问题讨论】:

  • @Yunnosch 因为我用 C 编写我的 JVMTI 代理。

标签: c jvmti


【解决方案1】:

许多复杂的软件库都使用自己的内存管理。优点是——尤其是对于图像处理——对内存的需求通常是相同的大小。在这种情况下,内存并没有真正释放,只是添加到池中并在下次需要时提供。 自定义内存管理还可以减少内存不足错误,因为可以更好地管理进程内存。

我在开发图像处理插件时注意到了这一点。我认为这与 jvmti 的设计理念相同。

话虽如此,new、delete 或 malloc、free 的使用都是允许的,这不是问题。正如您所注意到的,您不能将自定义分配与常规删除或免费混合使用。因此,您必须确保 malloc 后跟 free 和 new 和 delete。此外,任何自定义 alloc 都将使用自定义 free。等等……

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 2012-06-10
    • 1970-01-01
    • 2012-08-29
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多