0

Hi I'm writing a maven java web application. I use JPA and Hibernate in my project and wrote a contextinitialized listener which when application starts, will create an entity manager factory and put it in servlet context attribute. But when I run this code, I get the following error. I did the same before and never got this exception.

public class ContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        EntityManagerFactory EMF = Persistence.createEntityManagerFactory("App");
        ServletContext ctx = sce.getServletContext() ;
        ctx.setAttribute("EMF", EMF);
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}

The exception is:

java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2479)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:880)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1294)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177)
    at Listeners.ContextListener.contextInitialized(ContextListener.java:23)
Marvin
  • 13,325
  • 3
  • 51
  • 57
  • Do you have a memory leak somewhere? You can visualize your data by using a tool like VisualVM. Also, try increasing your heap space `java -Xmx 2g ...` – djthoms May 22 '16 at 23:06
  • use Java8 and you will get rid from error because of permgen space is removed in Java 8 – Darshit May 23 '16 at 09:40

0 Answers0