gpt4 book ai didi

java - 调用 MATLAB JA Builder 编译组件时出现内存不足错误

转载 作者:行者123 更新时间:2023-12-01 05:40:11 25 4
gpt4 key购买 nike

我在使用 Java 调用 MATLAB JA Builder 编译代码时遇到了一个奇怪的问题。详情如下:

  1. 代码对大型 .mat 文件执行 load()
  2. 如果在 MATLAB 中打开 mat 文件(通过导入 .mat),则一切正常,并占用约 900MB 内存
  3. 如果从 Java 应用程序调用代码(仅导入由 JA Builder 构建的函数),则 MATLAB 脚本内存不足
  4. 我尝试过将 Xmx 设置得很高,但这似乎根本没有任何作用
  5. 更奇怪的是,如果通过 Eclipse 调试器运行 java 程序,它最多可以使用 900MB 的 RAM,并且 load() 函数会成功

有人知道会发生什么吗?

<小时/>

我附上了堆栈跟踪的一部分:

??? Error using ==> loadOut of memory. Type HELP MEMORY for your options.... Matlab M-code Stack Trace ...file C:\Users\HiME\AppData\Local\MathWorks\mcr_cache_v78\fileProcesso_39586D5669D9A968B2CD5231A43620E4\fileProcesso\getHeaders.m,name getHeaders,line at 8.com.mathworks.toolbox.javabuilder.MWException: Error using ==> loadOut of memory. Type HELP MEMORY for your options.Error in =>getHeaders.m at 8

最佳答案

尝试设置 -Xmx 更低

在常规 Matlab 进程中,内存分为用于 Java 对象的 Java 堆和可用于 Matlab M 数据结构(如加载结果)的其他内存。增大 Java 堆会调整该分界线,将内存从 native 代码和 Matlab 的 GC 中夺走,并将其交给 Java。基本上,Java 堆和 Matlab 堆是在内存竞争。在 JA Builder 库中运行的 JVM 可能以相同的方式工作。

检查您在 Eclipse 下运行的堆大小,并将其与 Java 应用程序正常运行的情况进行比较,并尝试减小 Java 堆大小,以为 Matlab 堆保留更多内存。

关于java - 调用 MATLAB JA Builder 编译组件时出现内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7385706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com