В Java у объекта как минимум 16 байтов
Размер, прежде чем рассмотреть, какой другой контент он содержит.
1e8 элементов в хэш-карте имеют заниженное требование к размеру
1e8 * 2 * 16 байт, и это предполагает, что ваши ключи и
значения являются числами, поэтому требуется несколько ГБ доступной кучи
в вашей куче и с вашего компьютера.
Строка - это объект, содержащий массив символов, поэтому ваши строки
как уже упоминалось многими выше, может быть больше, чем двойной объект
например, следовательно, вам нужно больше памяти, доступной для
куча.
Обратите внимание, что программы начинают работать плохо, когда вы приближаетесь к пределу
вашего компьютера тоже.
Если вы не хотите использовать базу данных, как указано выше,
вы могли бы рассмотреть кодирование и сжатие ваших ключей, чтобы сделать
их в числа, которые вы можете посчитать частоту.
Вы можете выбрать энтропийную кодировку на основе
частота слов в этом первом кодировании и идти оттуда ...