java - 数学与 J/链接 : Memory Constraints?

标签 java wolfram-mathematica jlink

我正在使用 Mathematica 及其 J/Link Java 接口(interface)进行计算密集型基准测试。

如果达到大约 320 MB 的内存占用量,基准测试就会停止,因为这似乎是极限,垃圾收集器需要越来越多的时间并最终会失败。

Mathematica 函数 ReinstallJava采用参数命令行。我试着做

ReinstallJava[CommandLine -> "java -Xmx2000m ..."]

但是 Mathematica 似乎完全忽略了 -Xmx 选项。

如何为我的 java 程序设置 -Xmx 内存选项? 320 MB 的限制从何而来?任何帮助将不胜感激。

最佳答案

ReinstallJava 采用 JVMArguments 选项。您可以像这样使用它来传递堆大小:

In[1]:= Needs["JLink`"]

In[2]:= Options[ReinstallJava]

Out[2]= {ClassPath -> Automatic, CommandLine -> Automatic, 
 JVMArguments -> None, ForceLaunch -> False, Default -> Automatic, 
 CreateExtraLinks -> Automatic, "Asynchronous" -> Automatic}

In[3]:= ?JVMArguments

JVMArguments is an option to InstallJava that
allows you to specify additional command-line
arguments passed to the Java virtual machine at
startup. The string you specify is added to the
command line used to launch Java. You can use this
option to specify properties with the standard -D
syntax, such as "-Dsome.property=true". This
option is not supported on Mac OSX. >>

In[4]:= LoadJavaClass["java.lang.Runtime"];

In[5]:= java`lang`Runtime`getRuntime[]@maxMemory[]

Out[5]= 238616576

In[6]:= ReinstallJava[JVMArguments -> "-Xmx64g"];

In[7]:= LoadJavaClass["java.lang.Runtime"];

In[8]:= java`lang`Runtime`getRuntime[]@maxMemory[]

Out[8]= 61084008448

(我曾经通过阅读 C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links\JLink\Kernel 中的代码在绝望中弄明白了这一点。注意到它被列出后在 Options[ReinstallJava] 中,这似乎很明显……)

关于java - 数学与 J/链接 : Memory Constraints?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/992911/

相关文章:

java - jlink 图像中的区域设置 getDisplayLanguage 损坏

java - 在 Quarkus 下使用 MapStruct 和 Lombok

c# - 使用mathematica 在 C# 中绘图

import - 大文本文件处理

python - Maple 中的 EllipticE 与 matematica 和 python 相比

json - Gson 的意外行为

java - 使用Jlink时如何安装jwdp依赖

java - 比较表行,防止重复

java - 从公共(public)静态访问私有(private)静态方法

java - 如何检测 JScrollPane 滚动条是否改变可见性?