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

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 ?

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

[code]
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);
}

}[/code]

grato,