0

在 JNI 调用期间,我一直在解决这个问题

“详细错误:#,#Java 运行时环境内存不足,无法继续。,#本机内存分配(malloc)未能为 GetStringUTFChars 分配18446744073203188961字节,#”。

我已经验证 GetStringUTFChars 读取的变量只有 3 个字符长,所以我确信这是 JNI 抛出的错误中提供的垃圾值。我已经尝试将 Xms 和 Xmx 增加到 512m 到 6g,但是这并没有帮助。

来自 JVM 的堆栈跟踪是:

当前线程 (0x000000004bef4800): JavaThread "main" [_thread_in_vm, id=638, stack(0x0000000040a9b000,0x0000000040b9c000)]

堆栈:[0x0000000040a9b000,0x0000000040b9c000],sp=0x0000000040b9a840,可用空间=1022k 本机帧:(J=编译的 Java 代码,j=解释,Vv=VM 代码,C=本机代码)V [libjvm.so+0x861275] VMError: :report_and_die()+0x265 V [libjvm.so+0x3e5668] report_vm_out_of_memory(char const*, int, unsigned long, char const*)+0x68 V [libjvm.so+0x511450] unsigned+0x210 。.

任何想法,我们如何诊断这里的主要问题?谢谢你的帮助!

4

1 回答 1

1

如果您的环境支持它,请传递-verbose:jnijava. 如果您的 JVM 支持它,请传递-Xcheck:jnijava. 要查看支持的内容,请转到java -helpjava -X -help

于 2013-09-24T00:36:10.743 回答