A "runtime" (cioè dopo che la applicazione è già stata avviata) no. Solo nel momento in cui avvii la JVM.
java -Xmx800m .....blabla......
(per 800 MByte di heap massimo)
Vedi documentazione comando java
Bisognerebbe vedere in dettaglio i dati e il tuo codice. Così come l'hai detto, non mi pare male ma ripeto, bisognerebbe vedere i dettagli.
Diciamo che se ci sono tantissimi dati uguali, es. ci sono 50000 righe dove in un campo c'è scritto "pippo", a runtime terrai referenziati 50000 oggetti String distinti con lo stesso contenuto. Si potrebbe pensare di realizzare un sistema di "pooling" degli oggetti. Che è applicabile in generale per tutti gli oggetti "immutabili" (String, Integer, ecc...).