Predictive Wear Balancing and Approximation for Efficient Non-Volatile Main Memory Management