如果您正在运行调用 Java 中的本机库的代码,那么当内存分配应该持续到对象的生命周期时,释放这些库分配的内存的常用方法是什么?在 C++ 中,我会使用析构函数,但 Java 从来没有真正拥有过这些,现在甚至更少了。
我最感兴趣的具体案例是JOCL,其中我有一个对象,该对象包装了已编译的 OpenCL 内核,并且其中的所有参数始终相同。表示已编译内核的结构和参数都在库端分配,JOCL 提供了一种方法clReleaseMemObject
,您可以调用该方法来减少指示何时应该删除对象的引用计数器(请注意,这与直接释放内存有点不同,但在这种情况下,我不这么认为)。
我假设如果程序终止时对象仍然存在,操作系统会清理所有内容,但我不太确定在线程中创建的对象。所以:
如果您希望在对象被垃圾回收时释放本机内存,是否有合适的地方调用释放此内存的方法?
如果对象是一个将持续一个线程持续时间的对象,是否有合适的地方进行此调用,或者这甚至是必要的吗?