Judy arrays are both speed- and memory-efficient, with no tuning or
configuration required, across a wide range of index set types (sequential,
periodic, clustered, random). Judy's speed and memory usage are typically
better than other data storage models such as skiplists, linked lists,
binary, ternary, b-trees, or even hashing, and improves with very large
data sets.

The memory used by a Judy array is nearly proportional to the
population (number of elements). Note that as Judy is allocated on
C language side, GHC's profiling system won't report memory use by
Judy arrays.

Operations

Allocate a new empty JudyL array. A finalizer is associated with
the JudyL array, that will free it automatically once the last
reference has been dropped. Note that if you store pointers in the
Judy array we have no way of deallocating those. You need to track
those yourself (e.g. via StableName or ForeignPtr).

The Haskell GC will track references to the foreign resource, but the
foreign resource won't exert any heap pressure on the GC, meaning
that finalizers will be run much later than you expect. An explicit
performGC can help with this.