Resultset na memoria Ram

4 respostas
javamysql
E

Olá, estou implementando um método em java que pesquisa no banco de dados sqlite, e “joga” esses dados para um Resultset, ai coloco tudo num arraylist e o método retorna esse arraylist, faço isso pois preciso fechar o connection com o banco quando terminar o método, assim não posso retornar o resultset o método funciona bem. Minha dúvida é, o que ocupa mais memoria ram, o resultset ou uma arraylist? É viável usar um arraylist para armazenar os dados para manipulação? Existe a possibilidade de uma pesquisa no banco de dados que ocupe toda a memoria ram?

4 Respostas

igomes

Qual é o seu ambiente de desenvolvimento para ter toda essa preocupação com memória ?

esmiralha
  1. Um Resultset normalmente ocupa menos memória que um Arraylist, porque os dados não estão realmente todos dentro do Resultset. Um Resultset é um objeto que está conectado ao banco e que pode ser configurado de forma a carregar os dados em blocos. Porém, em alguns cenários, o driver pode decidir que o Resultset deve abrir um cursor do lado do cliente e carregar todos os resultados nesse cursor.
  2. Sim, é viável desde que você opere com quantidades “normais” de dados. Se você quiser carregar 2 bilhões de registros em um Arraylist vai ser complicado.
  3. Sim, depende de quantos registros a pesquisa irá retornar.
E

Esmiralha, valeu, entendi o funcionamento do Resultset , vou tentar fazer o retorno do método com Resultset, valeu mesmo.

esmiralha

Eduardo, importante você entender que o Resultset mantem uma conexão aberta com o banco de dados.
Eu não retornaria Resultset a menos que fosse um caso muito específico.

Criado 5 de junho de 2016
Ultima resposta 6 de jun. de 2016
Respostas 4
Participantes 3