【发布时间】:2015-10-23 12:58:25
【问题描述】:
我有一个奇怪的情况:我们有 .dll 库(我们称它为“sdk_wrapper”),它是 Java 类的包装器,它打开 JRE jvm.dll 并使用其他一些 .dll(PKCS11 实现,更具体地说- 但我认为没关系)。
当我直接在我的 c++ 程序中使用 sdk_wrapper(别名“run_dll”)时,一切正常。但是当我将它打包到另一个 .dll 中(准备配置文件、初始化库等)并导出一个与程序“run_dll”相同的函数时,调用它会导致 jvm 初始化错误:Could not reserve enough space for object heap。 JVM.dll 初始化是用-Xmx512m 做的。
你知道发生了什么吗?我读到 JVM 需要连续的部分内存来初始化,但是直接从程序和另一个 dll 调用“sdk_wrapper”有什么区别?它们在同一个地方(我的意思是在同一个目录中)。
【问题讨论】:
标签: java c++ dll jvm java-native-interface