Memory accesses limit the performance and scalability of countless applications. Many design and optimization e orts will bene t from an in-depth understanding of memory access behavior, which is not o ered by extant access tracing and pro ling methods.In this paper, we adopt a holistic memory access pro ling approach to enable a better understanding of program-system memory interactions. We have developed a two-pass tool adopting fast online and slow o ine pro ling, with which we have pro led, at the variable/object level, a collection of 38 representative applications spanning major domains (HPC, personal computing, data analytics, AI, graph processing, and datacenter workloads), at varying problem sizes. We have performed detailed result analysis and code examination. Our ndings provide new insights into application memory behavior, including insights on per-object access patterns, adoption of data structures, and memory-access changes at di erent problem sizes. We nd that scienti c computation applications exhibit distinct behaviors compared to datacenter workloads, motivating separate memory system design/optimizations.