Virtual memory addresses the three problems of memory by mapping program addresses to physical RAM addresses using page tables and disk storage. This allows (1) accessing memory beyond physical RAM by paging to disk, (2) non-contiguous usage of RAM to avoid fragmentation, and (3) isolating programs' memory spaces. Common algorithms like FIFO, optimal, and LRU are used for page replacement to determine which page to remove from RAM.