Overlay allows running large programs that exceed available memory by swapping program parts in and out of the same memory region. Only the currently executing portion needs to be in memory at any time. This extends effective memory without requiring physical RAM for the entire program.