It's holding a reference on each element, but it no longer has to add large chunks of memory on insert when the current array size is exceeded, just single elements.
So reads are slower and a small amount of reference memory is used per node. Writes however are much faster particularly when the lists are huge (as in this case).
Also I've written video frame processors so I am experienced in this area.