То, что вы можете сделать в приложении, это управлять тем, как вы извлекаете данные. Если вы извлекаете все строки из данного запроса, он может попытаться создать Collection
в вашем приложении, которое может очень быстро потреблять память, если вы не будете осторожны. Это, вероятно, наиболее вероятная причина истощения памяти.
Чтобы решить эту проблему, откройте курсор на запрос и извлеките строки одну за другой, отбрасывая объекты строк по мере итерации по набору результатов. Таким образом, вы сохраняете только одну строку за раз, и вы можете легко предсказать «высокую отметку».
В зависимости от драйвера JDBC (т. Е. Марки базы данных, к которой вы подключаетесь), может быть сложно убедить драйвер JDBC , а не выполнить выборку. Например, некоторые драйверы получают весь набор результатов, чтобы вы могли прокручивать его как вперед, так и назад. Несмотря на то, что JDBC является стандартным интерфейсом, его настройка для выполнения построчно вместо fetchall может включать в себя собственные опции.
На стороне сервера базы данных вы должны иметь возможность управлять объемом памяти, который он выделяет для кэша индекса и т. Д., Но конкретные вещи, которые вы можете настроить, различны для каждой марки базы данных. Там нет ярлыка для обучения себя о том, как настроить каждый сервер.