As most decision diagram packages, CUDD relies on garbage collection. Unlike many packages, though, it keeps track of what nodes are "dead" and uses this information to decide when garbage collection should be invoked.
CUDD can check how much memory is available (under Unix, with getrusage) and tries to decide the sizes of the data structures accordingly. Currently, the policy used by CUDD is reward-based: the size of the computed table is increased if there is enough memory, and the hit rate is sufficiently high.
CUDD provides a wide variety of functions (over 300 "external" functions) and a large selection of reordering methods. Further information can be found here .