Non-volatile memory (NVM) provides a scalable and power-e cient solution to replace DRAM as main memory. However, because of relatively high latency and low bandwidth of NVM, NVM is often paired with DRAM to build a heterogeneous memory system (HMS). As a result, data objects of the application must be carefully placed to NVM and DRAM for best performance. In this paper, we introduce a lightweight runtime solution that automatically and transparently manage data placement on HMS without the requirement of hardware modi cations and disruptive change to applications. Leveraging online pro ling and performance models, the runtime characterizes memory access pa erns associated with data objects, and minimizes unnecessary data movement. Our runtime solution e ectively bridges the performance gap between NVM and DRAM. We demonstrate that using NVM to replace the majority of DRAM can be a feasible solution for future HPC systems with the assistance of a so ware-based data management.