Consumo de memoria com laço

Pessoal, tenho um laço onde percorro e atualizo 100 registros. O grande problema é que minha aplicação é web e este laço precisa ser chama a cada 3 ou 4 segundos e isso esta consumindo muita memoria. Existe alguma forma de eu atualizar todos esses registros de uma forma mais rapida, sem precisar de um laço ou pelo menos deixar o laço mais rapido? O meu código esta mais ou menos assim (é uma fila de taxi, onde o primeiro a sair e o ultimo a entrar):

            for(int i=0;i<pessoasdao.listarfila(posicao).size();i++){
                pessoasdao.avancar_fila(pessoasdao.listarfila(posicao).get(i), pessoasdao.listarfila(posicao).get(i).getPosicao()-1);
            }

O que esses métodos fazem? Mexem no banco? Vc faz 100 updates por vez, isso? Não daria pra fazer num só?

De qualquer forma, chamar o listarfila 3x me parece desperdício. Já daria pra otimizar isso. Chama 1x e guarda numa variável.

Os metodos atualizam no banco, são 100 updates. Estou pensando em colocar na variavel, o processamento melhoraria muito?

Pelo jeito vc usa JPA. Se ainda sim não usar.
tente atualizar por batch.
Exemplo… Atualizar todos e so depois da commit.

Mas nesse caso o commit demoraria, ou não?

Não. Você vai ter uma transação ao invés de várias. Experimenta alterar para ver o que acontece.

blz, irei fazer os testes. Obrigado galera.

Galera, problema aparentemente solucionado, vou ficar monitorando para ver se vai dar algum problema. Uma outra duvida que tenho, como posso fazer para esse metodo que chama o laço ser “executado em fila”, tipo, o usuario só pode chamar o metodo novamente depois que ele tiver finalizado a execução? Ou a jvm ja se encarrega de fazer isso? É que preciso que essa lista seja acessada e alterada constatemente por N usuários.