Erro javax.servlet.ServletException: java.lang.OutOfMemoryError

1 resposta
aszarael

Boa Tarde Pessoal,

estou utilizando o eclipse + Tomcat para desenvolver uma aplicação web.

Porem em alguns momentos, estou obtendo os seguinte erro

HTTP Status 500 - javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space

--------------------------------------------------------------------------------

type Exception report

message javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space

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

exception 

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)


root cause 

javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
	org.apache.jsp.con29_jsp._jspService(con29_jsp.java:159)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)


root cause 

java.lang.OutOfMemoryError: Java heap space


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

Pelo que entendi, houve estouro de memoria, porem, pelo log, não consegui entender onde poderia estar o problema que está sobrecarregando a memoria.

Alguém poderia me ajudar ?

1 Resposta

aszarael

Somente para referencia estou utilizando minha classe de conexão desta maneira

package com.br.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class ManagerEntityManager {
	
	EntityManagerFactory factory;
	EntityManager entityManager;

	/* Metodo de Criação do Entity Manager */
	private EntityManager geraEntityManager(){
		
		factory = Persistence.createEntityManagerFactory("Portal");
		
		if (entityManager == null){
			entityManager = factory.createEntityManager();
		}
		
		if (!factory.isOpen()) {
			System.out.println("Nova conexão");
			entityManager = factory.createEntityManager();
			return entityManager;
		}else{
			System.out.println("Utilizando conexão já aberta");
			return entityManager;
		}
	}
	
	public EntityManager getEntityManager(){
		return geraEntityManager();
	}
}

e as classes de dao são todas deste modo

package com.br.dao;

import java.util.List;
import java.util.logging.Logger;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.br.model.Ts_Local_Negocio;

public class Ts_Local_NegocioDao {
	
	Logger logger = Logger.getLogger("br.com.log");  
	
	/* Metodo de Cria��o do Entity Manager */
	private EntityManager getEntityManager(){
		/*
		EntityManagerFactory factory;
		EntityManager entityManager;
		
		factory = Persistence.createEntityManagerFactory("Portal");
		
		if (factory.isOpen()) {
			factory.close();
			entityManager = factory.createEntityManager();
		}else{
			entityManager = factory.createEntityManager();
		}
		
		return entityManager;
		*/
		ManagerEntityManager manager = new ManagerEntityManager();
		return manager.getEntityManager();
	}
	
	/* Metodo de consulta no banco de dados */
	private List<Ts_Local_Negocio> consultar(List<String> pColunas, List<String> pValores){
		
		EntityManager entityManager = getEntityManager();
		String vSQL = "from Ts_Local_Negocio as ts_local_negocio";
		
		if (pColunas != null){
			vSQL += " WHERE ";
			
			for (int i = 0; i < pColunas.size(); i++){
				if (i==0){
					vSQL += " " + pColunas.get(i).toString() + " = '" + pValores.get(i).toString() + "'";
				}else{
					vSQL += " AND " + pColunas.get(i).toString() + " = '" + pValores.get(i).toString() + "'";
				}
			}
		}
		
		vSQL += " ORDER BY NUM_ID DESC";
		logger.info("Consulta : " + vSQL);
		Query vQuery = entityManager.createQuery(vSQL);		
		@SuppressWarnings("unchecked")
		List<Ts_Local_Negocio> listaLocalNegocio = vQuery.getResultList();
		entityManager.close();
		return listaLocalNegocio;		
	}	
	
	public List<Ts_Local_Negocio> select(List<String> pColunas, List<String> pValores){
		return consultar(pColunas,pValores);
	}

}

grato,

Criado 2 de julho de 2014
Ultima resposta 2 de jul. de 2014
Respostas 1
Participantes 1