MEX Generated on macOS Platform Stays Loaded in Memory
When generating MEX code on the macOS platform, you get one of these messages:
The generated code contains usage of OpenMP thread private variable. This can cause the MEX to remain loaded in the memory.
The MEX file 'foo_mex' is still loaded in memory. To clear the MEX file from memory, close the MATLAB session.
Your MATLAB® code contains global or persistent variables that are reachable from
the body of a
parfor-loop. Here is an example
MATLAB function that contains this code pattern.
function y = foo(x) y = coder.nullcopy(x); parfor i = 1:numel(x) y(i) = x(i) + sub; end function y = sub persistent t; if isempty(t) t = 2; end y = t;
When you generate a MEX function for
foo for the first time,
you can receive the warning message.
If you try to overwrite the generated MEX by generating code for
foo again, you can receive the error message.
If you receive the warning message, you can use the generated MEX function.
If you receive the error message, close the current MATLAB session to clear the MEX function
memory. To overwrite the previously generated MEX function , open a new MATLAB session and generate MEX code for