'persistent' 数据存储在已编译的 MATLAB 程序中的什么位置?

Where is 'persistent' data stored in compiled MATLAB programs?

我在 MATLAB 中有一个应用程序,它在数据加载到自身时缓存数据。 通过使用 'persistent' 命令,此数据在函数中 'cached'。例如。

persistent data
if isempty(data)
    data = getData() % function that reads data in
end

缓存这些数据后,它去了哪里? 我注意到即使程序关闭并重新打开,缓存仍然存在。是否正在写入磁盘?还是缓存存储在内存中?

一些细节:这是一个使用Matlab Compiler Runtime创建的程序,它是使用R2014b编写的。我不知道如何检查数据可能有多大,所以在这方面的任何帮助都是一种奖励。

编辑:缓存不会在我可以看到的程序实例中持续存在。我最初在我的程序的未编译版本中观察到这一点,这是有道理的,因为缓存将与 matlab 实例一起持续存在。

它存储在内存中。正如您在编辑中观察到的那样,它应该在 MATLAB 会话中持久存在,但不会跨会话。如果您编译它并 运行 它针对 MATLAB 编译器运行时,它不应该在关闭和重新 运行 编译的程序中持续存在 - 如果是这样,那就是一个错误。

我从未见过编译的可执行文件会发生这种情况,但我已经看到为与 MATLAB Production Server 一起使用而创建的编译组件会发生这种情况(其中可以多次使用相同的运行时,并且它没有正确清除通话之间的事情)。