GNU Emacs Lisp Reference Manual
You can discard the functions and variables loaded by a library to
reclaim memory for other Lisp objects. To do this, use the function
unload-feature:
defconst, defvar, defun,
defmacro, defsubst and defalias. It then restores
any autoloads formerly associated with those symbols. (Loading
saves these in the autoload property of the symbol.)
Ordinarily, unload-feature refuses to unload a library on which
other loaded libraries depend. (A library a depends on library
b if a contains a require for b.) If the
optional argument force is non-nil, dependencies are
ignored and you can unload any library.
The unload-feature function is written in Lisp; its actions are
based on the variable load-history.
Each element is a list and describes one library. The car of the list is the name of the library, as a string. The rest of the list is composed of these kinds of objects:
(require . feature) indicating
features that were required.
(provide . feature) indicating
features that were provided.
The value of load-history may have one element whose car is
nil. This element describes definitions made with
eval-buffer on a buffer that is not visiting a file.
The command eval-region updates load-history, but does so
by adding the symbols defined to the element for the file being visited,
rather than replacing that element.