Если вы используете visualVM для проверки использования вашей памяти, он фокусируется на данных, а не на методах. Может быть, ваши большие данные char [] вызваны многими значениями String? Если вы не используете рекурсию, данные не будут получены из локальных переменных. Поэтому вы можете сосредоточиться на методах, которые вставляют элементы в большие структуры данных. Чтобы узнать, какие точные высказывания вызывают «утечку памяти», я предлагаю вам дополнительно