【问题标题】:How to allocate more memory to a JAVA program when executed from MATLAB?从 MATLAB 执行时如何为 JAVA 程序分配更多内存?
【发布时间】:2014-01-14 10:21:09
【问题描述】:

简介:我最近一直在研究一个计算量很大的 JAVA 程序(ODE​​ Solver 和数值优化)。我已经实现了多线程,并且很快就可以访问大学里一个相当“大”的服务器来测试程序的性能。我已将程序创建为 .jar 文件,但我不执行此 .jar 文件。相反,我使用 MATLAB JVM 环境来使用 JAVA 中的特定类,直接从 MATLAB 执行。原因是 MATLAB 有这么酷的图形功能。

当前执行方式的说明:如前所述,程序直接从MATLAB执行,方式如下:

clear all
javaaddpath('..\binJava\MyFile.jar')
import functionality.*;
import domain.*;

我开始导入文件,然后将包加载到文件中(我的所有代码所在的位置)。 从这里我简单地执行:

myClass.execute(myInput);

问题: 如何在 MATLAB 中更改 java 程序中的 ram 分配?

由于实现多线程已经并将加快计算工作,我想确保一旦我借用服务器,RAM 不会成为瓶颈。我想让 RAM 调整对用户非常友好,这样我就可以直接从 matlab 到 java 代码调整 ram 使用,以利用服务器电源。

文学调查: 简而言之,我主要关注在使用 Eclipse(或不同环境)或从终端执行 .jar 文件时(对我来说不是这种情况)增加 RAM 的选项。

最后的评论:我什至不确定从服务器执行后内存分配是否会成为问题。可能是硬件本身会控制它。我不知道 - 请与我分享您的想法和 cmets。 谢谢!

【问题讨论】:

    标签: java multithreading matlab memory-management


    【解决方案1】:

    您只需要设置-Xmx 命令行选项来分配更多内存。

    这里似乎有一个很好的答案:

    http://www.mathworks.com/matlabcentral/answers/92813

    1. 创建 java.opts 文件:

    在 $MATLABROOT/bin/$ARCH 目录中创建一个名为 java.opts 的文本文件。 $MATLABROOT 是 MATLAB 根目录,$ARCH 是您的系统架构,您可以在 MATLAB 命令提示符处键入:

    然后再往下:

    用户可以通过在 java.opts 文件中手动设置这些值来覆盖这些值。例如,在 java.opts 文件中包含以下行会将 Max Heap Size 值设置为 256 MB:

    对于 1.2.2 及更高版本的 JVM,将以下内容放入您的 java.opts 文件中:

    -Xmx256m

    【讨论】:

    • 这是完美的 - 显然 MATLAB 允许在首选项中调整它以及 Preferences->MATLAB->General->'Java Heap Memory Preferences'。谢谢蒂姆!
    猜你喜欢
    • 2012-12-21
    • 2018-10-22
    • 2013-09-30
    • 2012-09-24
    • 2013-10-15
    • 2011-09-29
    • 2012-06-20
    • 2017-06-16
    • 2017-03-22
    相关资源
    最近更新 更多