C# MATLAB通过.NET调用使用的内存是否独立于.NET应用程序?

C# MATLAB通过.NET调用使用的内存是否独立于.NET应用程序?,c#,.net,matlab,matlab-deployment,C#,.net,Matlab,Matlab Deployment,我问这个问题的原因是,我有一个应用程序,它(除其他外)在数据写入特定文件时调用MATLAB.NET组件。该组件读取该文件并根据其中包含的数据创建图像。这个很好用 然而,当我使用底层应用程序额外处理“大量”数据并在表中显示处理后的数据时,对MATLAB的调用抛出内存不足异常,但仅当我处理大量数据时 这是否表明调用的MATLAB过程将依赖于应用程序的可用内存?我想我只是不明白从.NET的角度调用MATLAB内存时,它是如何工作的 (我还应该注意,每次调用MATLAB函数之前,我都会调用clear a

我问这个问题的原因是,我有一个应用程序,它(除其他外)在数据写入特定文件时调用MATLAB.NET组件。该组件读取该文件并根据其中包含的数据创建图像。这个很好用

然而,当我使用底层应用程序额外处理“大量”数据并在表中显示处理后的数据时,对MATLAB的调用抛出内存不足异常,但仅当我处理大量数据时

这是否表明调用的MATLAB过程将依赖于应用程序的可用内存?我想我只是不明白从.NET的角度调用MATLAB内存时,它是如何工作的


(我还应该注意,每次调用MATLAB函数之前,我都会调用clear all,试图“从头开始”,但无论如何都会失败)

完全有可能,根据您所描述的,甚至MATLAB组件可能正在使用非托管内存(不由.NET垃圾收集器管理的内存)除了确保只按预期数量向其提供预期数据外,您对此无能为力。如果您认为MATLAB使用正确,您可能还希望使用MATLAB创建一个支持票证。

从未从
C#
使用过
MATLAB
,但据我所知,它使用
COM
组件与
CLR
世界交互。将
MATLAB
非托管DLL加载到进程内存堆中。考虑到对于32位机器上的
CLR
进程,大约有1.2GB的内存空间,因此可用空间不足


关于如何将非托管COM组件加载到托管内存的一些有趣的描述,您可以在这里找到:

COM
Matlab Builder NE
构建的组件是进程中的
COM
服务器。这意味着它们是加载到应用程序内存空间中的
DLL
s。这意味着
MCR
,它是一种
Matlab虚拟机
,位于内存空间中

我相信
.NET
组件的行为应该完全相同