我正在尝试使用 JNI 将大型 java 缓冲区字节 [](例如 460800)发送到 C++ 函数。下面是示例代码:
JNIExport void JNICALL XXXXXX_onRecvData(JNIEnv *env, jclass class, jbyteArray data) {
jbyte *pData = NULL;
pData = env->GetByteArrayElements(data, NULL);
// call some function here
Method((UINT8 *) pData, (UINT16)(env->GetArrayLength(data));
env->ReleaseByteArrayElements(data, pData, 0);
}
在哪里
Method(uint8_t* buf, uint32_t buf_size) {
// print buf_size
}
当我打印 buf_size 时,我得到了一些小的值,例如 2048。这意味着我在 JNI 函数中没有收到完整的缓冲区。我可以使用 JNI 发送的缓冲区大小是否有任何限制?知道为什么会发生吗?