我正在移植大量数学。我正在使用来自java的c ++并且看到了这样做的巨大性能提升但是我无法弄清楚要使用什么jni函数来摆脱我不再需要的变量。例如,我知道当你的jni方法结束并且你一直在使用jfloatArray
时,你会打电话:
env->ReleaseFloatArrayElements(vec,in,0);
这会破坏阵列并释放内存。如果可能的话,我希望能够对不是数组类型的单个基元做同样的事情,但是我已经查看了oracle和sun文档,并且没有方法可以做这样的事情......应该我只是使用默认方式使用c ++来销毁对象,或者是否有一种安全可靠的方法来做这样的事情。
答案 0 :(得分:2)
没有必要。你只需要清理的情况下
JNI接口可能已分配内存或其他资源。基本
类似于jfloat
的类型是基本C ++类型的typedef(通常,
float
),并通过副本传递;当你申报jfloat
时,
它只是堆栈上的浮点类型,并在你消失时消失
离开它的范围。您必须清理的类型通常是
指针;清理功能可以释放内存
指针指向。