C语言 JVMTI Allocate/Deallocate and malloc/free



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

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

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

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

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

我在开发图像处理插件时注意到这一点。我想jvmti的设计理念也是一样的。

也就是说,允许使用new, delete或malloc, free,这不是问题。正如您所注意到的,您不能将自定义alloc与常规的delete或free混合使用。因此,您必须确保malloc后跟free, new后跟delete。此外,任何自定义alloc都将使用自定义free。等等…

最新更新