JVMTI Allocate/Deallocate 和 malloc/free

JVMTI Allocate/Deallocate and malloc/free

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

我知道我不能释放由 JVMTI Allocate 分配的内存,也不能使用 JVMTI Deallocate 释放由 malloc 分配的内存。

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

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

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

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

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