make-object-permanent makes object permanent (if possible), which means that GC will never scan or free it (but will still follow pointers from it). That reduces the amount of work for the GC.
An object that has been made permanent will never be freed by the GC, so you must use release-object-and-nullify to free it.
Large vectors that do not contain pointers (that is every vector except
simple-vector) are not scanned by the GC, so making them permanent does not give a significant gain. Thus
make-object-permanent is really useful only for
If you make a new large
simple-vector objects and want to make them permanent immediately, it is better to use make-permanent-simple-vector, because
make-object-permanent causes the next GC to take more time, while make-permanent-simple-vector does not (unless supplied an initial-element which is not immediate or permanent).
LispWorks User Guide and Reference Manual - 20 Sep 2017