The document discusses self-monitoring applications and proposes a hierarchy for monitoring software. It suggests lightweight monitoring of basic resource usage like CPU and memory, medium monitoring of less frequent events like exceptions, and invasive profiling for deep diagnostics of issues like memory leaks. Examples of monitoring CPU usage, garbage collection, and detecting deadlocks are provided. While self-monitoring provides benefits like visibility and scalability, it also increases complexity and overhead.