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.

Reply via email to