MATLAB Runtime Component Cache 和可部署存档嵌入
对于除 Java® 之外的所有部署目标,编译后的应用程序数据默认情况下会直接嵌入到可部署存档中,并在运行时提取到一个临时文件夹。此临时文件夹称为 MATLAB® Runtime 组件缓存。当编译后的应用程序运行时,可部署存档(CTF 文件)中的文件会被提取到 MATLAB Runtime 组件缓存中。有关使用 Java 包进行数据提取的详细信息,请参阅定义可部署 Java 存档的嵌入和提取选项。
缓存大小和位置
R2024b 之前版本中的默认最大缓存大小为 32 MB,从 R2024b 开始增至 1024 MB。下表列出了默认的组件缓存位置。
| 平台 | R2024b 之前的版本 | R2024b 及更高版本 |
|---|---|---|
| Windows® | %LOCALAPPDATA%\Temp\%USERNAME%\mcrCache | %LOCALAPPDATA%\MathWorks\MatlabRuntimeCache\ |
| Linux® | $HOME/.mcrCache | $HOME/.MathWorks/MatlabRuntimeCache/ |
| Mac | MATLAB R2020a 及更高版本中不使用缓存。App 捆绑包包含运行时所需的文件。 | |
使用环境变量更改选项
使用环境变量,您可以为 MATLAB Runtime 组件缓存指定以下选项:
定义您希望自动提取可部署存档的默认位置
添加诊断错误打印选项,这些选项可在自动提取可部署存档时使用,以便进行故障排除
出于性能原因调整 MATLAB Runtime 组件缓存大小
使用以下系统环境变量更改这些设置。
| 环境变量 | 目的 | 注意 |
|---|---|---|
| MCR_CACHE_ROOT | 当设置为您希望提取可部署存档的位置时,此变量会覆盖默认的每用户组件缓存位置。这仅适用于嵌入的 .ctf 文件。 | 在 macOS 上,MATLAB R2020a 及更高版本中会忽略此变量。App 捆绑包包含运行时所需的文件。 |
| MCR_CACHE_SIZE | 设置后,此变量会覆盖默认组件缓存大小。 | 此变量的初始限制为 32M(兆字节),从 R2024b 开始为 1024M。不过,首次设置此变量后,可以更改此限制。请编辑文件 .max_size(该文件位于运行 mcrcachedir 命令指定的文件中),并使用所需的缓存大小限制。 |
覆盖默认行为
对于除 Java 以外的目标,您可以使用 mcc -C 选项来指示 mcc 不要将可部署存档嵌入到生成的二进制文件中。您可以使用此选项来解决可部署存档的问题,因为这样日志和诊断消息更加清晰可见。
您也可以通过在编译器 App 的设置部分中添加 -c 标志来实现此覆盖。
如果您使用的是 compiler.build 函数,请使用 EmbedArchive=false 选项。
注意
如果您在运行 mcc 时指定了冲突的包装器和目标类型,则存档将不会嵌入到生成的组件中,就像您为 mcc 指定了 -C 选项一样。例如:
mcc -W lib:myLib -T link:exe test.m test.c