Erro Java heap space

5 respostas
G

Pessoal Bom dia

Estou populando um ResultSet com um total de 1671390 rows de uma tabela MYSQL, é uma tabela muito grande, mais meu sistema vai ter que buscar valores nela.

ResultSet rs;
Statement st;

st = con.createStatement();
rs = st.executeQuery(“Select * from tabela”);

Logo no começo quando vai popular este ResultSet já gera uma excessão abaixo:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Java heap space

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:449)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

javax.servlet.ServletException: Java heap space

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)

org.apache.jsp.comparar_jsp._jspService(comparar_jsp.java:158)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.OutOfMemoryError: Java heap space

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.

Como posso resolver esse problema pessoal ?

Abraços

Cristian

5 Respostas

S

cara da uma olhada nesse topico,


http://www.guj.com.br/posts/list/64057.java

fabim

gaudi:
… Estou populando um ResultSet com um total de 1671390 rows de uma tabela MYSQL, é uma tabela muito grande, mais meu sistema vai ter que buscar valores nela.

e pra isso precisa carregar quase 2 milhoes de registros? :shock:

T

No meu tempo, você usava a cláusula WHERE e limitava a quantidade de registros a serem selecionados. Por que é que você precisa pegar TODOS?

Z

thingol:

Estou populando um ResultSet com um total de 1671390 rows de uma tabela MYSQL, é uma tabela muito grande, mais meu sistema vai ter que buscar valores nela.

No meu tempo, você usava a cláusula WHERE e limitava a quantidade de registros a serem selecionados. Por que é que você precisa pegar TODOS?

Talvez tenha uma opção na tela de “Todos”… :wink:

fsquadro

zezinho,

Mas acho que daí seria de bom tom, e também um questão de bom censo, obrigar o usuário a filtrar. Imagina 1 milhão de registros e o cara seleciona a opção “TODOS”.
Pra mim não faz sentido.
Tem um sistema que desenvolvemos que tem um volume grande de dados, que para o usuário fazer a listagem ele precisa obrigatoriamente fazer uma filtragem, senão a performance fica inviavel.
Imagina tu esperar cerca de 20 a 30s por uma listagem na tela… IMPOSSIVEL neh.

Criado 11 de julho de 2007
Ultima resposta 11 de jul. de 2007
Respostas 5
Participantes 6