0

我正在使用允许您导入自定义文件的 Java 应用程序。导入时,这些文件被加载到内存中。

问题是我要导入的文件非常大,这会导致 OutOfMemory 异常。崩溃日志还告诉我,VM 是使用 java 参数“-Xmx512m”启动的,我想将其更改为“-Xmx1024m”,以便获得双倍的可用内存。

问题是这个应用程序正在使用它自己的 JRE 文件夹,并且有一个用 C 语言编写的启动器正在调用 jvm.dll 文件。无论如何,java.exe 或 javaw.exe 永远不会被调用,因此我无法自己设置这些参数(如果我删除这些可执行文件没关系,仍然可以运行应用程序 - dll 不是这种情况)。

所以,我的问题是,我可以用其他方式设置这个 VM 参数吗?如果没有其他方法,我什至愿意更改 JRE 文件。

更新:发现了一些额外的信息:

jvm_args:-Djava.system.class.loader=com.company.loader.NativeClassLoader -Xmx160m -Xms160m -Xincgc

java_command:未知

启动器类型:通用

4

1 回答 1

1

尝试使用标准 JVM 来消除启动器可能会更好。看看你是否能弄清楚 Java 的启动参数——它可能有助于转储启动器和任何相关的配置文件。

然后你自己调用java。

这可能根本不起作用,具体取决于启动器正在做什么。

编辑:

尝试:

java -Djava.system.class.loader=com.company.loader.NativeClassLoader -Xmx160m -Xms160m -Xincgc

从命令行针对真正的 JVM。由于 NativeClassLoader 或 java 加载程序设置的其他内容,它很有可能会失败。

此外,您可能会错过它试图启动的实际 java 类(我不知道“NativeClassLoader”是否需要实际的主类)。

在不了解 C 类加载器的更多信息的情况下,我不知道是否有人可以帮助您。也许你可以联系供应商?您可能会转储 .exe 文件并查看是否有任何识别文本——如果您能找出它的来源,您可能会在其上找到文档,告诉您如何将参数转发到 JVM

于 2010-04-27T23:22:00.837 回答