Я использую драйвер mssql-jdbc в версии 6.4.0-jre8.Я выполняю простой запрос SELECT *
, который может вернуть миллионы строк.Чтобы избежать ошибки OOM, я определил responseBuffering=adaptive
и fetchSize=10000
.Я также гарантировал, что ResultSet
- это type_fetch_only
и concur_read_only
.Несмотря на это, я все еще получаю ошибку OOM.Размер кучи немедленно возрастает до предела XMX.
Ниже вы можете найти анализ дампа памяти.Интересно, почему TDSPackets не освобождаются достаточно рано?
Буду признателен за любые предложения, как избежать ошибки OOM здесь.Спасибо!