Ui is virtualized by default - so the list box reuses data tables for list items and displays only those list items that actually scroll to the view.
However, if you use observable union, then the data is not virtualized.
So, if you have a list of 1,000,000 elements, then all of them will be in memory, but only ui for some of them will be created and drawn.
To also virtualize data, you need to implement a custom alias, possibly also supporting inotifycollectionchanged. This implementation may, for example, use SQLite to simply load data items as they scroll.
source share