gpt4 book ai didi

java - 如何减少Matlab中物理内存的增加?

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:30 26 4
gpt4 key购买 nike

当在Matlab中运行以下代码时,Matlab的物理内存使用量不断增加,直到达到我系统内存的90%,并导致程序崩溃。该代码是一个更大的优化方案的一部分,该方案将有更多的迭代,但这里已经进行了简化。

import org.parent.modeling.*

for i = 1:100
rTool = Tool('C:/etc');
model = rTool.getModel();
model.initSystem();
rTool.setModel(model);
rTool.run();
end

rTool 和模型作为 Java 对象存储在工作区中。通过有选择地从下到上删除步骤,我确定 rTool.run();步骤导致每次迭代期间内存增量增加。我尝试过使用各种内存清除技术但没有成功

clear classes, clear java, clear rTool model, clear all 

我已经通过运行内存命令检查了碎片,但它是微不足道的。下面是API文档对应的实际代码(https://simtk.org/api_docs/opensim/api_docs/classOpenSim_1_1RRATool.html)

for i = 1:1:4

import org.opensim.modeling.*

rraTool = RRATool('C:\...filename.xml');
model = rraTool.getModel();
model.initSystem();

rraTool.setModel(model);
rraTool.run();

end

对于减少物理内存的增加有什么建议吗?

Matlab:2013

最佳答案

很难弄清楚你在这里实际上在做什么,更不用说为什么它会泄漏内存了。根据我的推断,您可以从 MatLab 调用 Java,也可以直接从 Matlab 调用 C++。我无法确定您是直接调用 C++ 库,还是通过 Java (JNI/JNA) 包装器调用它。如果你正在做后者......为什么。

对于 Matlab -> C++ 情况,本页有一些避免内存泄漏的提示:http://www.mathworks.com.au/help/matlab/matlab_external/memory-management-issues.html

对于 Matlab -> Java -> C++ 情况,泄漏可能是由于 Java 包装器或其关联的 C++ 端包装器代码中的错误,或者您使用包装器的方式存在问题。例如,您可能需要调用一些 dispose 方法。详细信息应该在 Java API 文档中...您无法找到...或者在 Java 源代码本身中。

<小时/>

I was hoping that there were some general memory clearing Java commands I could use.

不存在这样的神奇命令。您需要找出内存泄漏的位置并修复它。

关于java - 如何减少Matlab中物理内存的增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15847106/

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