Overlays are a solution to the limitation of contiguous memory allocation. Overlay is a memory management technique used by the programmers to split their object code into independent sections which are dynamically loaded whenever required by the overlay driver. Overlay area is the contiguous memory allocated to the user programs. But only the required instructions need to be loaded in memory at a time not the entire program. Common data and routines may be kept in memory. Needed instructions and data replace those no longer in use. It overcomes the problem of limited size of programs that can be loaded into main memory. Virtual Memory accomplishes similar goals.