macOS上MATLAB脚本不生效等问题,需清理预编译文件:一、清除函数缓存并rehash;二、手动删除.p和.mexmaci64文件;三、清空tempdir及~/Library/Caches/MathWorks/MATLAB/;四、clear java并删除java.opts;五、彻底删除~/Library/Application Support/MathWorks/MATLAB/等配置目录。

如果您在 macOS 上运行 MATLAB 时遇到脚本修改后未生效、函数调用异常或启动变慢等问题,可能是由于 MATLAB 生成的预编译文件(P-code 缓存、MEX 编译产物、JIT 缓存等)出现不一致或损坏。以下是针对 macOS 平台清理 MATLAB 预编译文件的具体操作方法:
一、清除 MATLAB 工作区与函数缓存
该步骤用于刷新 MATLAB 内存中已加载的函数定义和 JIT 编译状态,避免旧版本函数被重复调用。
1、启动 MATLAB(确保无未保存的重要工作区变量)。
2、在命令行窗口中依次执行以下命令:
clear functions
clear mex
rehash toolboxcache
3、执行 rehash 后,MATLAB 将重新扫描所有路径并重建内部函数索引,此操作可强制丢弃已失效的预编译函数引用。
二、删除 MATLAB 自动生成的 P-code 和 MEX 文件
用户手动创建的 .p 文件(如 myfunc.p)或编译生成的 .mexmaci64 文件不会被 MATLAB 自动管理,需手动定位并移除。
1、在 MATLAB 命令行中运行:which('myfunc')(将 myfunc 替换为实际函数名),确认其物理路径。
2、打开 Finder,按 Command+Shift+G,输入该路径,进入对应文件夹。
3、查找并删除所有以 .p 或 .mexmaci64 为后缀的文件。
4、若使用过 coder 或 mcc 编译,检查当前目录及子目录中是否存在 _mex、_pcode 或 codegen 文件夹,一并删除。
三、清空 MATLAB 临时目录与缓存文件夹
macOS 上 MATLAB 会将 JIT 编译中间文件、临时 MEX 构建产物、Java 类缓存等写入系统临时目录和用户专属缓存路径,这些内容需手动清除。
1、在 MATLAB 中运行:tempdir,获取系统临时目录路径(通常为 /var/folders/xxx/xxx/T/)。
2、打开 Finder → 按 Command+Shift+G → 粘贴上述路径 → 回车。
3、查找并删除所有名称包含 MATLAB_Files_ 的子文件夹(这些是 MATLAB 自动创建的回收/临时缓存容器)。
4、同时访问用户缓存路径:~/Library/Caches/MathWorks/MATLAB/,删除其中全部内容(该路径下存放 JIT 缓存、图形渲染缓存、偏好设置临时副本)。
四、重置 Java 类加载器与 JVM 缓存
当使用 Java 类、App Designer、Web UI 或第三方 Java 库时,JVM 可能缓存旧类定义,导致行为异常;清除 Java 缓存可解除此类锁定。
1、在 MATLAB 命令行中执行:clear java。
2、关闭 MATLAB。
3、前往 ~/Library/Preferences/MathWorks/MATLAB/,删除以 java.opts 或 jvm.config 结尾的配置文件(如有)。
4、重启 MATLAB 后,JVM 将以默认参数重建类路径,所有 Java 类定义将重新加载,旧编译字节码不再生效。
五、彻底清理 MATLAB 用户配置与预编译状态
该方法适用于长期使用后缓存严重污染、或升级版本后兼容性异常的情形,将重置 MATLAB 启动时自动加载的所有预编译上下文。
1、退出 MATLAB,确保无 matlab 进程运行(可在“活动监视器”中搜索并强制退出 matlab 和 matlab_helper)。
2、打开终端(Terminal),依次执行:
rm -rf ~/Library/Application\ Support/MathWorks/MATLAB/
rm -rf ~/Library/Preferences/com.mathworks.*
rm -rf ~/Library/Saved\ Application\ State/com.mathworks.*
3、上述命令将删除 MATLAB 的全部用户级配置、工具箱偏好、GUI 状态缓存及预编译启动映像(startup.m 缓存、pathdef.m 快照等)。
4、重启 MATLAB 后,首次启动将重建空缓存环境,所有函数首次调用时均重新解析与 JIT 编译,确保完全干净的执行上下文。











