Dúvida. estou progamando no notebook… tenho um cadastro grande(29mil itens)… está dando estouro de memoria ao listar esse itens numa tabela.
Esse estouro é pela memoria da maquina ou tem alguma confg do JVM para aumentar?
Se hospedar essa aplicação no servidor dará esse estouro?
Como posso medir se meu sevidor suportará a aplicação?
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.OutOfMemoryError: Java heap space
Você precisa exibir os 29 mil registros de uma vez?
Duvido, então use paginação para tal.
De que adianta tu ter um servidor para uma aplicação que não foi bem dimensionada, independente do servidor, se aumentar muito os dados tu vai ter estouro de memória.
usar uma paginação vai deixar teu sistema bem mais leve.
[quote=jaziel.rc]Você precisa exibir os 29 mil registros de uma vez?
Duvido, então use paginação para tal.
De que adianta tu ter um servidor para uma aplicação que não foi bem dimensionada, independente do servidor, se aumentar muito os dados tu vai ter estouro de memória.
usar uma paginação vai deixar teu sistema bem mais leve.[/quote]
Nunca usei o Vraptor, mas o conceito de paginação é aplicavel a qualquer framework ou programação feita.
Simples, divida seus dados em porções menores, e carregue eles a medida que for necessário.
Por exemplo, liste apenas 100 linhas de sua tabela por vez, e coloque controles para avançar ou recuar, e a cada interação tu recupera os proximos (ou anteriores) 100 registros e exibe esses.
Usa limit no sql para ir retornando os valores selecionados, com uma variavel contando a paginação que esta fica bem facil de fazer.
Entendeu a idéia???
[quote=jaziel.rc]Nunca usei o Vraptor, mas o conceito de paginação é aplicavel a qualquer framework ou programação feita.
Simples, divida seus dados em porções menores, e carregue eles a medida que for necessário.
Por exemplo, liste apenas 100 linhas de sua tabela por vez, e coloque controles para avançar ou recuar, e a cada interação tu recupera os proximos (ou anteriores) 100 registros e exibe esses.
Usa limit no sql para ir retornando os valores selecionados, com uma variavel contando a paginação que esta fica bem facil de fazer.
Entendeu a idéia???[/quote]
Não existe uma fórmula mágica para fazer paginação. Até porque há muitas formas de implementar isso dependendo do que você precisa. Por exemplo, carregar em memória e ir navegando nos registros, ou ir buscando registros de N em N até chegar ao final dando apenas next e back ou então fazer um count na base de dados, calcular o range que você quer exibir, e aí sim exibir na view.
A abordagem que eu sempre uso é conforme os critérios de pesquisa fazer um count na base. Com a quantidade de registros estimada, com o número da página atual e com a quantidade de registros por página você consegue calcular o range que você vai exibir. E a partir disso basta você fazer a consulta no banco de dados pesquisando apenas pelo range atual. Além disso é necessário imprimir a paginação para que o usuário possa navegar nos resultados.
Lá no outro tópico te mandei um link de um gist de uma solução que uso em alguns projetos meus. Como te falei, não existe formula mágica, então você vai ter que adaptar ao teu caso.
Outra sugestão, caso você achei que paginar seja complicado d+, é de você limitar a quantidade de registros exibidos forçando o usuário a sempre usar um filtro de pesquisa para refinar a busca.