Многие другие приложения будут требовать свою долю в 1 ГБ, и у вас должно быть достаточно свободной оперативной памяти для эффективного сбора мусора.
Ваше приложение может получить только 24 МБ за весь процесс . Некоторые из них должны быть свободными для GC, а некоторые - другими классами, данными и несобранным мусором.
Анализируемый JSON - это, по сути, ряд вложенных списков и хэшей. Предположим, что каждое (в штучной упаковке) число занимает 4-16 байтов, каждая запись в хеш-таблице занимает еще 4-8 байтов для хеша + 4 байта для указателя, плюс некоторые издержки из-за коэффициента загрузки ниже 1, строки становятся UCS2, даже если ASCII и т. д. Длинный JSON со множеством мелких объектов может легко занять 10-кратное ОЗУ.
Старайтесь не анализировать весь файл в памяти, если вам не нужен целый его в оперативной памяти для работы. Попробуйте потоковый анализатор и запись вещей в базу данных.