2
オブジェクトの割り当てにネイティブレイヤーを使用しようとしています。たとえば:Android Native:ネイティブレイヤーから返ってオブジェクトを解放する方法
JNIEXPORT jobject JNICALL
Java_memory_hqt_com_heapsizetesting_jnitest_JNIActivity_getBigDataFromJni(JNIEnv *env, jobject instance, jint memory) {
unsigned char* buffer = (unsigned char*) malloc(memory);
jobject directBuffer = (*env)->NewDirectByteBuffer(env, buffer, memory);
return directBuffer;
}
そして私は、Java層で再びデータを取得する:私が知っているように、ネイティブオブジェクトがガベージコレクタによって管理されていない
public native Object getBigDataFromJni(int memory);
ByteBuffer data = (ByteBuffer) getBigDataFromJni(1024);
。だから私の質問は:どのように私はデータオブジェクトを完了した後にメモリを取り戻すことができます。
ネイティブコードでダイレクトByteBufferを作成する理由は何ですか? –