Открытость/закрытость узла определяется в какой из HashMap он хранится. Судя по снимку памяти, больше всего занимает объект позиции, который создается, иногда, лишний раз. Там все немного сложнее - вершины графа хранятся в других объектах, а Node создаются непосредственно при поиске пути. Так же в требованиях работа этого всего в многопоточном режиме, поэтому пул придется блокировать на время получения/возвращения узлов. В дальнейшем буду пробовать оптимизировать использование памяти, на данном этапе это не требуется.
Параметры PermGen в jdk 11 отсутствуют, поэтому эта опция не спала. Проблему и решение описал в ответе.