1. Reduce memory footprint during snapshotting 2. Avoid copy (ByteBuffers and FileChannels) 3. Invert control