首页 > 解决方案 > 已编译的 MATLAB 程序中存储的“持久”数据在哪里?

问题描述

我在 MATLAB 中有一个应用程序,它在数据加载到自身时缓存数据。通过使用“持久”命令,这些数据被“缓存”在函数中。例如

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

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

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

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

标签: matlabcachingpersistent-storage

解决方案


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

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


推荐阅读