通过 JNI 在 C 和 Java 之间传递指针
目前,我正在尝试创建一个使用CUDA功能的Java应用程序。CUDA和Java之间的连接工作正常,但我还有另一个问题,想问一下,我的想法是否正确。
当我从Java调用一个本机函数时,我会向它传递一些数据,这些函数会计算一些东西并返回一个结果。有没有可能,让第一个函数返回一个引用(指针)到这个结果,我可以传递给JNI并调用另一个函数来进一步计算结果?
我的想法是减少将数据复制到GPU或从GPU复制数据所带来的开销,方法是将数据保留在GPU内存中,然后只传递对它的引用,以便其他函数可以使用它。
经过一段时间的尝试,我自己认为,这应该是不可能的,因为在应用程序结束后(在这种情况下,当C函数终止时),指针会被删除。这是正确的吗?还是我只是在C中不好才能看到解决方案?
编辑:好吧,稍微扩展一下问题(或者更清楚地说明):当函数结束时,JNI本机函数分配的内存是否被释放?或者,在JNI应用程序结束或手动释放它之前,我仍然可以访问它吗?
感谢您的输入:)