Hi all,

I want to utilize memory usage in Julia. Before I do some heavy computations, I want to clear some big matrices to optimize the memory usage in my code.

For example, I have two big matrices, `A`

and `B`

. In the function `combine_A_B_and_compute`

, I input `A`

, and `B`

, and combine them to matrix `K`

do some computations. Since `A`

and `B`

are big matrices, after building matrix `K`

, I want to clear `A`

and `B`

(set them to be `nothing`

) inside the function and in the caller workspace.

In Matlab, I can do so by `clear A B; evalin(‘caller’, [‘clear A B’])`

;

In Julia, if I use

```
function combine_A_B_and_compute(A, B)
K = cat(A,B,dims=1)
A = nothing;
B = nothing;
GC.gc()
……
end
```

It does not clear `A`

and `B`

in the caller workspace.

The way I have is to define a `mutual structure Matrices`

and making `A`

and `B`

be its fields:

```
mutable struct Matrices
A::Union{Matrix, Nothing}
B::Union{Matrix, Nothing}
Matrices()=new()
end
```

Then by setting the fields in `mutual struct Matrices`

to nothing, I can clear `A`

and `B`

in the caller workspace.

```
function combine_A_B_and_calculate!(X::Matrices)
K = cat(X.A,X.B,dims=1)
X.A = nothing;
X.B = nothing;
GC.gc()
……
end
```

However, this way is not very intuitive.

Is there a better way to clear variables in the caller workspace in Julia? Thanks!