Live migration of virtual machines (VMs) is useful for resource management of data centers and cloud platforms. The precopy algorithm is widely used for memory migration. However, when encountered with write-intensive workloads, the precopy's straightforward iteration strategy will become inefficient. Worse still, it is hard to tune the performance with the existing parameters, unless load characteristics are known in advance. In this paper, we propose an improved pre-filter-copy (PFC) algorithm. The main target is to reduce migration time and bandwidth resource consumption of the precopy algorithm, while keeping downtime at the same level. We designed a novel data filter to achieve this goal. In each round of iteration, it forecasts the pages that will be subsequently dirtied and then filters them from the send list. Meanwhile, previously filtered pages will be reconsidered, to see if they can be added to the send list. This ensures that the downtime will not be increased. Furthermore, a new parameter is proposed to improve the adaptivity of the precopy algorithm. Experimental results show that the PFC algorithm significantly reduces migration time and the amount of migrated data, while keeping the downtime at the same level.