Да, это, конечно, возможно.
Возможно, я бы использовал список SoftReference s для ваших предыдущих состояний документа. Они гарантированно удаляются до возникновения исключения нехватки памяти.
Через некоторый периодический интервал вы можете удалять пустые ссылки из списка.
Я бы также рекомендовал сохранить нормальную ссылку на самое последнее состояние, чтобы вы всегда могли гарантировать хотя бы одну отмену: -)
Это будет зависеть от реализации JVM, но если вам повезет, JVM сохранит самые последние состояния и избавится от самых старых. Это не обязательно требуется в спецификации JVM, но это рекомендуемое поведение.