我的进程是在Suse运行的JNI上运行对Java的C ++调用。 经过几天的工作后,我遇到了关于JVM的内存问题:
使用以下跟踪:
V [libjvm.so+0xaba71a] VMError::report_and_die()+0x2ba
V [libjvm.so+0x4f9ecb] report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*)+0x8b
V [libjvm.so+0x91b553] os::Linux::commit_memory_impl(char*, unsigned long, bool)+0x103
V [libjvm.so+0x91b61c] os::pd_commit_memory(char*, unsigned long, bool)+0xc
V [libjvm.so+0x9150da] os::commit_memory(char*, unsigned long, bool)+0x2a
V [libjvm.so+0x9197ef] os::pd_create_stack_guard_pages(char*, unsigned long)+0x7f
V [libjvm.so+0xa603ce] JavaThread::create_stack_guard_pages()+0x5e
V [libjvm.so+0x6cd4e4] attach_current_thread+0xb4
这台机器有足够的内存(几TB),所以这很不可能是由于普通机器内存不足而无法增加预留的Java堆。
通过查看报告的剩余部分,我可以看到我有动态库的65535个条目,如下所示:
7326707ff000-732670801000 ---p 00000000 00:00 0
732670801000-732671000000 rwxp 00000000 00:00 0
732671000000-73269d400000 rw-p 00000000 00:00 0
73269d5ff000-73269d602000 ---p 00000000 00:00 0
我的问题: