Naturally, there will be some distinctions between the services/components
used in the production environment and those included with the local SDK.
We're working hard to keep this distinction as transparent as possible, but
we do not currently have a document listing the implementation differences
between the local and production components. That said, if you have any
specific questions on how the local SDK works in relation to the production
environment, please ask.
- Jason

On Fri, Aug 14, 2009 at 5:09 PM, PLX <[email protected]> wrote:

>
> I appreciate
>
> This is very useful information. Can you provide me with a link to
> dev.server documentation, please? I want to review all differences
> between production and development servers.
>
> Thank you
>
> On Aug 12, 3:26 pm, PLX <[email protected]> wrote:
> > Hi,
> >
> > I'm trying to understand, how is it possible to insert a large amount
> > of data to datastore with JDO. But I have a memory leak problem.
> >
> > PersistenceManager pm = null;
> > for (int i = 0; i < 100; i++) {
> >   try {
> >     pm = PMF.get().getPersistenceManager();
> >     List<Product> products = new Vector<Product>();
> >     for (int j = 0; j < 1000; j++) {
> >       Product p = new Product();
> >       products.add(p);
> >     }
> >     pm.makePersistentAll(products);
> >     products.clear();
> >     System.out.println("committed " + i);
> >   } catch (Exception e) {
> >     e.printStackTrace();
> >   }
> >   finally {
> >     pm.close();
> >   }
> >
> > }
> >
> > I've tried:
> > - to use the same PM instance all the time without recreating it after
> > every 1000 inserts.
> > - pm.flush();
> > - pm.evictAll();
> > - pm.makePersistent(p); instead of creating the list and calling
> > pm.makePersistentAll() for it
> >
> > Nothing helps. After approximately 55000 inserts I get the same:
> >
> > java.lang.OutOfMemoryError: Java heap space
> >         at java.lang.reflect.Method.copy(Method.java:143)
> >         at java.lang.reflect.ReflectAccess.copyMethod
> > (ReflectAccess.java:118)
> >         at sun.reflect.ReflectionFactory.copyMethod
> > (ReflectionFactory.java:282)
> >         at java.lang.Class.copyMethods(Class.java:2748)
> >         at java.lang.Class.getMethods(Class.java:1410)
> >         at
> >
> com.google.appengine.tools.development.ApiProxyLocalImpl.getDispatchMethod
> > (ApiProxyLocalImpl.java:149)
> >         at
> > com.google.appengine.tools.development.ApiProxyLocalImpl.makeSyncCall
> > (ApiProxyLocalImpl.java:88)
> >         at com.google.apphosting.api.ApiProxy.makeSyncCall
> > (ApiProxy.java:79)
> >         at
> > com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall
> > (DatastoreApiHelper.java:48)
> >         at com.google.appengine.api.datastore.DatastoreServiceImpl
> > $2.run(DatastoreServiceImpl.java:169)
> >         at
> > com.google.appengine.api.datastore.TransactionRunner.runInTransaction
> > (TransactionRunner.java:30)
> >         at com.google.appengine.api.datastore.DatastoreServiceImpl.put
> > (DatastoreServiceImpl.java:157)
> >         at com.google.appengine.api.datastore.DatastoreServiceImpl.put
> > (DatastoreServiceImpl.java:137)
> >         at com.google.appengine.api.datastore.DatastoreServiceImpl.put
> > (DatastoreServiceImpl.java:129)
> >         at
> >
> org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.put
> > (RuntimeExceptionWrappingDatastoreService.java:92)
> >         at
> > org.datanucleus.store.appengine.DatastorePersistenceHandler.put
> > (DatastorePersistenceHandler.java:108)
> >         at
> > org.datanucleus.store.appengine.DatastorePersistenceHandler.put
> > (DatastorePersistenceHandler.java:94)
> >         at
> > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject
> > (DatastorePersistenceHandler.java:195)
> >         at
> > org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent
> > (JDOStateManagerImpl.java:3185)
> >         at org.datanucleus.state.JDOStateManagerImpl.makePersistent
> > (JDOStateManagerImpl.java:3161)
> >         at org.datanucleus.ObjectManagerImpl.persistObjectInternal
> > (ObjectManagerImpl.java:1298)
> >         at org.datanucleus.ObjectManagerImpl.persistObject
> > (ObjectManagerImpl.java:1175)
> >         at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
> > (JDOPersistenceManager.java:669)
> >         at org.datanucleus.jdo.JDOPersistenceManager.makePersistentAll
> > (JDOPersistenceManager.java:723)
> >         at test.servlet.RunServlet.doGet(RunServlet.java:46)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:
> > 693)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:
> > 806)
> >         at org.mortbay.jetty.servlet.ServletHolder.handle
> > (ServletHolder.java:487)
> >         at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1093)
> >         at
> > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
> > (TransactionCleanupFilter.java:43)
> >         at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1084)
> >         at
> > com.google.appengine.tools.development.StaticFileFilter.doFilter
> > (StaticFileFilter.java:124)
> >
> > Simply saying: does JDO have something like JPA's session.clear() ?
> >
> > Thanks
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to