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