Приведенные выше рекомендации относительно размера кучи будут полезны. Однако я не уверен, что вы дали точное описание размера вашей матрицы.
Предположим, у вас есть 4 локации. Затем вам нужно оценить расстояния между A-> B, A-> C, A-> D, B-> C, B-> D, C-> D. Это предполагает шесть записей в вашей HashMap (4 выберите 2).
Это заставит меня поверить в то, что фактический оптимальный размер вашей HashMap (952 выберите 2) = 452 676; НЕ 952х952 = 906,304.
Все это предполагает, конечно, что вы храните только односторонние отношения (то есть от A-> B, но не от B-> A, поскольку это избыточно), что я бы порекомендовал, поскольку вы уже испытываете проблемы с памятью.
Редактировать: Надо было сказать, что размер вашей матрицы не является оптимальным, вместо того, чтобы сказать, что описание не было точным.