Memory leaks are dynamic runtime phenomena that can only be detected by analyzing program behavior during execution. Dynamic analysis tools, including memory profilers, monitor memory allocation and deallocation patterns to identify leaks. Static techniques like coverage analysis cannot detect memory leaks.