1. A memory management method comprising taking a given snapshot of a memory volume at a given time, providing the snapshot with a mapping table and memory values of the volume, the mapping table and memory values comprising entries for addresses of the physical memory containing data, and wherein said values differ from data in an ancestor, wherein the given snapshot is enabled to be a part of a hierarchy of snapshots; wherein said given snapshot is part of a hierarchy of snapshots taken at succeeding times, the method comprising providing said entries to said given snapshot for addresses of the physical memory to which data was entered subsequent to taking of a most recent previous snapshot in the hierarchy, and providing, to said given snapshot, pointers to previous snapshots in the hierarchy for data entered prior to taking of a most recent previous snapshot; navigating the hierarchy of snapshots using a first tree, a second tree, and a third tree; wherein the first tree indicates a most recent ancestor snapshot of said given snapshot, wherein the second tree indicates which level of the hierarchy of snapshots contains data, wherein the third tree is enabled to provide a depth-first search ordering of snapshots within the hierarchy of snapshots; and recognizing a long strand in the hierarchy of snapshots, aggregating the long strand in the hierarchy of snapshots to create an aggregated snapshot tree, wherein each snapshot is enabled to be a group of snapshots.