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 :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:jniますjava。JVM がサポートしている場合は、 に渡し-Xcheck:jniますjava。サポートされているものを確認するには、java -helpとにアクセスしてjava -X -helpください。

于 2013-09-24T00:36:10.743 に答える