cha*_*ker 5 java memory-management native-code jocl
如果您正在运行的代码调用Java中的本机库,那么当内存分配应在对象的生命周期内持续时,释放这些库分配的内存的常用方法是什么?在C ++中,我将使用析构函数,但是Java从来没有真正使用过析构函数,现在更少了。
我最感兴趣的特定情况是JOCL,其中有一个对象,该对象包装已编译的OpenCL内核以及所有始终相同的参数。表示已编译内核和参数的结构都在库侧分配,JOCL提供了一种方法clReleaseMemObject
,您可以调用该方法来递减指示何时应删除对象的引用计数器(请注意,这与直接释放内存有些不同,但在这种情况下,我基本上不这么认为。
我假设如果程序终止时该对象仍然存在,则操作系统将清除所有内容,但是我不确定线程中创建的对象。所以:
如果要在垃圾回收对象时释放本机内存,是否有合适的位置调用释放该内存的方法?
如果对象是将在线程持续时间内持续的对象,那么是否存在进行此调用的适当位置,或者甚至有必要这样做吗?