1. A method for a computing system to migrate virtual pages between cache regions of different memory types in a mixed cache, the mixed cache being indexed to a main memory comprising physical pages so that each physical page in the main memory is mapped to one group of contiguous cache sets in the mixed cache, a nursery array and a mature array being indexed to a virtual memory comprising virtual pages so that each virtual page is mapped to one row in the nursery array and one row in the mature array, the method comprising: applying page coloring to map the virtual memory to the main memory so that physical pages mapped to different groups of contiguous cache sets are assigned to adjacent virtual pages; and recording access to a particular virtual page of the virtual memory from the mixed cache, wherein recording comprises: receiving a virtual address for the particular virtual page; from the received virtual address, determining an index and a tag of an array address to the nursery array and the mature array; following the determined index of the array address to a row in the nursery array and a row in the mature array, wherein the row in the nursery array and the row in the mature array comprises virtual page entries; determining whether or not the determined tag of the array address matches any tag in the virtual page entries of the row in the nursery array and the row in the mature array; in response to a non-match between the determined tag of the array address and any tag in the virtual page entries of the row in the nursery array and the row in the mature array, writing a virtual page entry of the row in the nursery array with the determined tag of the array address and an access count; and in response to a match between the determined tag of the array address and the tag in the virtual page entry, incrementing the access count in the virtual page entry that corresponds to the matched tags.