matlab - 已编译的 MATLAB 程序中存储的“持久”数据在哪里?
问题描述
我在 MATLAB 中有一个应用程序,它在数据加载到自身时缓存数据。通过使用“持久”命令,这些数据被“缓存”在函数中。例如
persistent data
if isempty(data)
data = getData() % function that reads data in
end
当这些数据被缓存时,它会去哪里?我注意到即使程序关闭并重新打开,缓存仍然存在。它正在写入磁盘吗?还是缓存存储在内存中?
一些细节:这是一个使用 Matlab Compiler Runtime 创建的程序,它是使用 R2014b 编写的。我不知道如何检查大数据可能有多大,所以在这方面的任何帮助都是额外的。
编辑:缓存没有在我可以看到的程序实例之间持续存在。我最初在我的程序的未编译版本中观察到这一点,这是有道理的,因为缓存将与 matlab 实例一起存在。
解决方案
它存储在内存中。正如您在编辑中观察到的那样,它应该在 MATLAB 会话中持续存在,而不是跨会话持续存在。如果您编译它并针对 MATLAB Compiler Runtime 运行它,它不应该在关闭和重新运行已编译的程序时持续存在 - 如果是这样,那就是一个错误。
我从未见过编译的可执行文件会发生这种情况,但我已经看到它发生在为与 MATLAB Production Server 一起使用而创建的编译组件上(其中可以多次使用相同的运行时,并且它不能正确清除调用之间的内容)。
推荐阅读
- android - 如何将 ViewBinding 与 RecyclerView Adapter 与 Kotlin 中现有的内部类一起使用?
- php - PHP 不显示错误并且 POST 不工作
- rest - 当差异在路由中时如何使用 ResponseCache 在 ASPNET Core 中缓存
- r - 在数据框中添加一个新列,其中包含开始和结束时间戳之间的天数
- elasticsearch - 使用匹配词进行弹性搜索排序(如果存在)
- php - 我可以使用 artisan serve laravel 运行多个命令吗?
- powershell - 更改 PowerShell 对象属性名称,保留值
- swift - 在 NSPopupButton 菜单中使用与主菜单相同的 keyEquivalent
- swift - 组合中的可重用发布者(订阅?)
- facebook - Facebook Graph API 服务暂时不可用错误