可以在一个JVMTI代理中同时由JVMTI Allocate/Deallocate和malloc/free管理内存吗?
我知道我不能释放由JVMTI使用free分配的内存,并且不能使用JVMTI Deallocate来释放使用malloc分配的内存。
我的猜测是,它之所以有效,是因为malloc在必要时从操作系统获取内存,我假设JVMTI Allocate也做类似的事情。由此,我得出结论,JVMTI分配/解除分配和malloc/free不会相互干扰。
背景:我有一些使用malloc/free的库,我想在我的JVMTI代理中使用它们。
发布于 2021-09-22 07:11:14
许多复杂的软件库都使用自己的内存管理。优点是-尤其是对于图像处理-对内存的需求通常是相同的大小。在这种情况下,内存并没有真正释放,只是添加到一个池中,并在下一次需要时提供。自定义内存管理还可以减少内存不足错误,因为可以更好地管理进程内存。
我在开发图像处理插件时注意到了这一点。我假设这是与jvmti相同的设计理念。
也就是说,允许使用new、delete或malloc、free,这不是问题。正如您已经注意到的,您不能将自定义分配与常规删除或释放混合在一起。因此,您必须确保malloc后面是free和new with delete。此外,任何自定义分配都将使用自定义的免费空间。以此类推。
https://stackoverflow.com/questions/69279521
复制相似问题