One of the main considerations in computer programming is memory management. Optimizing memory performance requires careful, goal-oriented coding to ensure that cache hits are maximized. In pursuit of this goal, data structures and memory buffers must be carefully designed. This paper serves as a guide to the sources of many types of memory issues, with specific examples, and as an introduction to using Intel’s VTune Performance Analyzer. The memory issues discussed include unnecessary cache compulsory loads, cache capacity loads, cache conflict loads, cache inefficiencies, store forwarding issues, and unaligned data.