We're also getting the (on dev machines): Exception in thread "main" java.lang.OutOfMemoryError: PermGen space.
This happens when we raise the number of backend instances. When we use 3 backend instances (on local machine), the dev server works fine. When we use 4, sometimes it works - mostly not. Above that, we always get the OutOfMemoryError exception. Here are the exception details: java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java: 141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java: 176) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at com.google.appengine.api.datastore.DatastoreServiceImpl.<init>(DatastoreServiceImpl.java: 31) at com.google.appengine.api.datastore.DatastoreServiceFactory.getDatastoreService(DatastoreServiceFactory.java: 47) at com.google.appengine.api.datastore.DatastoreServiceFactory.getDatastoreService(DatastoreServiceFactory.java: 20) at com.google.appengine.api.taskqueue.QueueImpl.<init>(QueueImpl.java: 47) at com.google.appengine.api.taskqueue.QueueFactory.getQueue(QueueFactory.java: 36) at com.saymg.oktapi.guice.ServicesModule.configure(ServicesModule.java: 182) at com.google.inject.AbstractModule.configure(AbstractModule.java:59) at com.google.inject.spi.Elements $RecordingBinder.install(Elements.java:223) at com.google.inject.spi.Elements.getElements(Elements.java:101) at com.google.inject.internal.InjectorShell $Builder.build(InjectorShell.java:138) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java: 115) at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:100) at com.google.inject.Guice.createInjector(Guice.java:95) at com.google.inject.Guice.createInjector(Guice.java:72) at com.google.inject.Guice.createInjector(Guice.java:61) at com.saymg.oktapi.guice.InjectorFactory.<clinit>(InjectorFactory.java: 14) at com.saymg.oktapi.guice.WebGuiceServletContextListener.getInjector(WebGuiceServletContextListener.java: 16) at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java: 45) at com.saymg.oktapi.guice.WebGuiceServletContextListener.contextInitialized(WebGuiceServletContextListener.java: 23) at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java: 548) I think that the dev environment tries for each backend instance defined in backends.xml. Looking for a way to bypass this problem, with no configuration changes of backends.xml, since we want to do as less changes as possible between dev env and deployed app. On Jan 5, 9:44 am, jhonghee <jhong...@gmail.com> wrote: > As I reported in my previous > post:https://groups.google.com/group/google-appengine-java/browse_thread/t..., > I am having this PermGen issue consistently now. > > I think that it's really related to localdevenvironment support > forBackendservice. Please take a look at following stacktrace. It > originated from BackendServersFilter. If I disabledBackendService on > my localdev, I don't have PermGen issue. > > java.lang.OutOfMemoryError: PermGen space > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) > at java.lang.ClassLoader.defineClass(ClassLoader.java:615) > at java.security.SecureClassLoader.defineClass(SecureClassLoader.java: > 141) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) > at java.net.URLClassLoader.access$000(URLClassLoader.java:58) > at java.net.URLClassLoader$1.run(URLClassLoader.java:197) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:190) > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > at > com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(Iso > latedAppClassLoader.java: > 176) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at > org.codehaus.jackson.util.BufferRecycler.<init>(BufferRecycler.java: > 48) > at > org.codehaus.jackson.JsonFactory._getBufferRecycler(JsonFactory.java: > 601) > at org.codehaus.jackson.JsonFactory._createContext(JsonFactory.java: > 532) > at > org.codehaus.jackson.JsonFactory.createJsonGenerator(JsonFactory.java: > 458) > at > org.springframework.http.converter.json.MappingJacksonHttpMessageConverter. > writeInternal(MappingJacksonHttpMessageConverter.java: > 148) > at > org.springframework.http.converter.AbstractHttpMessageConverter.write(Abstr > actHttpMessageConverter.java: > 181) > at > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapt er > $ServletHandlerMethodInvoker.writeWithMessageConverters(AnnotationMethodHan > dlerAdapter.java: > 975) > at > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapt er > $ServletHandlerMethodInvoker.handleResponseBody(AnnotationMethodHandlerAdap > ter.java: > 933) > at > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapt er > $ServletHandlerMethodInvoker.getModelAndView(AnnotationMethodHandlerAdapter > .java: > 882) > at > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapt > er.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java: > 428) > at > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapt > er.handle(AnnotationMethodHandlerAdapter.java: > 414) > at > org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServ > let.java: > 790) > at > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServl > et.java: > 719) > at > org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkSe > rvlet.java: > 644) > at > org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.jav a: > 549) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: > 511) > at org.mortbay.jetty.servlet.ServletHandler > $CachedChain.doFilter(ServletHandler.java:1166) > at > com.google.appengine.tools.development.BackendServersFilter.doFilter(Backen > dServersFilter.java: > 97) > Jan 5, 2012 2:32:18 AM com.google.apphosting.utils.jetty.JettyLogger > warn > WARNING: /saveItem > java.lang.OutOfMemoryError: PermGen space > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) > at java.lang.ClassLoader.defineClass(ClassLoader.java:615) > at java.security.SecureClassLoader.defineClass(SecureClassLoader.java: > 141) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) > at java.net.URLClassLoader.access$000(URLClassLoader.java:58) > at java.net.URLClassLoader$1.run(URLClassLoader.java:197) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:190) > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > at > com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(Iso > latedAppClassLoader.java: > 176) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at com.google.apphosting.api.DatastorePb > $PutResponse.<clinit>(DatastorePb.java:11932) > at > com.google.appengine.api.datastore.AsyncDatastoreServiceImpl.doBatchPutBySi > ze(AsyncDatastoreServiceImpl.java: > 523) > at > com.google.appengine.api.datastore.AsyncDatastoreServiceImpl.put(AsyncDatas > toreServiceImpl.java: > 466) > at com.google.appengine.api.datastore.DatastoreServiceImpl > $2.runInternal(DatastoreServiceImpl.java:113) > at com.google.appengine.api.datastore.DatastoreServiceImpl > $2.runInternal(DatastoreServiceImpl.java:110) > at > com.google.appengine.api.datastore.TransactionRunner.runInTransaction(Trans > actionRunner.java: > 31) > at > com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServic > eImpl.java: > 110) > at > com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServic > eImpl.java: > 94) > at > org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.pu > t(RuntimeExceptionWrappingDatastoreService.java: > 96) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.put(DatastorePe > rsistenceHandler.java: > 196) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.put(DatastorePe > rsistenceHandler.java: > 137) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(D > atastorePersistenceHandler.java: > 270) > at > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(Da > tastorePersistenceHandler.java: > 256) > at > org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStateMa > nagerImpl.java: > 3185) > at > org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImp > l.java: > 3161) > at > org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.j > ava: > 1298) > at > org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java: > 1175) > at > org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceM > anager.java: > 669) > at > org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceMana > ger.java: > 694) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.