This document discusses application profiling for memory and performance. It describes how to measure contention in CPU, memory, disk I/O, and network I/O as concurrency increases. It recommends performance tuning by identifying bottlenecks and shifting them through parameter tweaking and code profiling. Common issues like classcast exceptions, permgen errors, deadlocks, nullpointers, and outofmemoryexceptions can be addressed through profiling tools like JProfiler, Eclipse Memory Analyzer, and JConsole. The document provides examples of how WSO2 uses profiling to optimize products like the Identity Server for low-memory environments and Raspberry Pi clusters.