The TOP_N_SORT operator should keep the top N rows while processing its input, and free the memory used to hold all rows below the top N.
For example, the following query uses a table with 125M rows:
And failed with an OOM when each of the 3 TOP_N_SORT operators was holding about 2.44 GB !! (see attached profile). It should take far less memory to hold 30 rows !!