Introduction ============ * What memory leakage is; * How it is handled under: - Windows - Linux - MacOS * Methods the OS use to handle memory leakage; * Various third-party applications that handle memory leakage; * Our own conclusions about how to handle memory leakage; --------------------------------------------------------------- Memory Leakage ============== * Continual allocation of memory to a process; * Memory is never freed; * System becomes unresponsive; ----------------------------------------------------------------- Windows ======= * Virtual Memory * Process creation allows entire swapfile; * Dynamic Link Libraries (dll's) are usually the culprit; ------------------------------------------------------------------ Linux ===== * Linux kernel 2.2.X onwards defines Out Of Memory (OOM-killer) * Processes therefore aren't allowed to consume the entire VM * Self-preservation of the kernel. * Parent/Child hierarchy of processes. * Uninterruptable sleep means the parent process must die. -------------------------------------------------------------------- MacOS ===== * Mac OS 6 had poor memory design features. * Memory allocated via the concept of pointers. * Fragmentation. * MacOS 9 onwards uses techniques from Linux. * Memory leaks mostly confined to applications.