Se la semplice assegnazione di oggetti per i casi di test più piccoli utilizza diversi GB di RAM e molti piccoli oggetti, hai ragione a preoccuparti dei casi più grandi.
Vorrei sedermi e riflettere attentamente sui tuoi dati necessari per un caso di test più ampio. Se sta spingendo ciò che ti piace, ristrutturerei radicalmente il tuo programma. Per l'ispirazione, leggi link e pensa a come implementare una versione giocattolo utilizzando l'utility di ordinamento Unix standard. (Attenzione, è necessario impostare l'impostazione internazionale su C perché faccia la cosa giusta.)
Ho personalmente scritto programmi che utilizzavano versioni "giocattolo" del genere per elaborare miliardi di punti dati su una singola macchina nel giro di poche ore. Se hai a disposizione un vero cluster con qualcosa come Hadoop, allora l'unico limite è la dimensione del tuo cluster. (Con AWS a tua disposizione, è solo una questione di quanto vuoi spendere.)
Se si termina "su scala Internet", ricordare che la chiave per la scalabilità è eseguire una mappa, ridurre per mappare i dati da un archivio dati distribuito a un altro. In questo modo c'è tolleranza agli errori ovunque (nel tuo archivio dati e nella tua infrastruttura di riduzione della mappa) e nessun colli di bottiglia. Quello che non vorresti mai, mai, è raccogliere i dati su una singola macchina.
Ammettiamolo, questo implica un ripensamento completo del programma. Ma se hai bisogno di EVENTUALMENTE, potrebbe anche farlo ora quando è meno lavoro!