为了执行Java代码,Octave会创建一个Java虚拟机(JVM)。默认情况下,在类Unix系统上,使用的是配置期间检测到的JVM版本;在Windows上,使用的是注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE 或
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment 所指向的版本。
JVM的默认路径可以通过设置环境变量 JAVA_HOME 来覆盖,将其设为JVM安装的路径。
在Windows上,例如可能是 C:\Program Files\Java\jre-10.0.2。
请确保所选目录中的JVM位数与Octave的位数匹配。
JVM在每个Octave会话中只加载一次。因此,要更改所使用的JVM版本,您可能需要重新启动Octave。要检查当前正在使用的JVM版本,请运行 version -java。
JVM会分配一个固定大小的初始内存,并可将此内存池扩展到固定的最大内存限制。默认值取决于Java版本(参见 javamem)。该内存池由JVM中运行的所有Java对象共享。这种严格的内存限制主要是为了避免Web浏览器或企业服务器中的应用程序占用所有内存并导致系统崩溃。当达到最大内存限制时,Java代码将抛出异常,从而导致应用程序失败或行为异常。
您可以在名为 java.opts 的文件中指定创建JVM的选项。这是一个文本文件,您在其中逐行输入 -X 和 -D 选项,这些选项会在初始化时传递给JVM。
Java选项文件所在的目录由环境变量 OCTAVE_JAVA_DIR 指定。如果未设置该变量,则使用 javaclasspath.m 所在的目录(通常为
OCTAVE_HOME/share/octave/OCTAVE_VERSION/m/java/)。
您可以通过执行以下命令找到此目录:
which javaclasspath
-X 选项允许您增加JVM可用的最大内存量。以下示例通过在 java.opts 文件中添加以下行,允许最多使用256兆字节:
-Xmx256m
可能的最大内存量取决于您的系统。在主内存为2GB的Windows系统上,您应该能够将此最大值设置为约1GB。
如果您的应用程序从一开始就需要大量内存,您还可以指定分配给JVM的初始内存量。将以下行添加到 java.opts 文件,将以64兆字节的初始内存启动JVM:
-Xms64m
有关Java虚拟机可用 -X 选项的更多详细信息,请在操作系统命令提示符下执行命令 java -X,并查阅Java文档。
-D 选项可用于定义系统属性,这些属性随后可在Octave中被Java类使用。系统属性可以通过 java.lang.System 类的 getProperty() 方法获取。以下示例行定义了属性 MyProperty 并将其赋值为字符串 12.34:
-DMyProperty=12.34
然后,可以通过Java对象或在Octave中以字符串形式检索该属性的值:
octave> javaMethod ("getProperty", "java.lang.System", "MyProperty");
ans = 12.34
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4