• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: ListPage MySQL OutOfMemory
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ListPage MySQL OutOfMemory


  • Subject: Re: ListPage MySQL OutOfMemory
  • From: Ramsey Gurley <email@hidden>
  • Date: Fri, 04 May 2012 11:39:19 -0700

If you are fetching tens of thousands of rows for a list page, you may want to consider using the ERXBatchingDisplayGroup to minimize memory usage. By default, the WODisplayGroup pulls all the EOs into memory.  The batching display group uses the database to handle the pagination. It only creates the EO instances for the displayed batch.

If you're using a EODetailDataSource in the list page, the batching display group doesn't work AFAIK. In the case of large to-many relationships though, I would recommend you simply not model it as a relationship and handle it in code.  In that case, you'd probably want to place a limit on your fetch spec to prevent all the EOs being pulled into memory.  Big to-many relationships tend to cause issues when you addObjectToBothSides anyway.

Ramsey

On May 4, 2012, at 6:58 AM, Ron X wrote:

> i have small database - about 50 Mb...
>
> code:
>         ListPageInterface listPage = D2W.factory().listPageForEntityNamed(
>                 Song.ENTITY_NAME, session());
>         EODataSource dataSource = new EODatabaseDataSource(session()
>                 .defaultEditingContext(), Song.ENTITY_NAME);
>         listPage.setDataSource(dataSource);
>
>         return (WOComponent) listPage;
>
> and error:
>
>  N  19.07 MB used/104.87 MB free [WorkerThread8] (ERXNSLogLog4jBridge.java:43)  - <er.extensions.appserver.ERXComponentRequestHandler>: Exception occurred while handling request:
> com.webobjects.foundation.NSForwardException [java.lang.OutOfMemoryError] Java heap space:java.lang.OutOfMemoryError: Java heap space
> [2012-5-4 6:54:11 PDT] <WorkerThread8> com.webobjects.foundation.NSForwardException [java.lang.OutOfMemoryError] Java heap space:java.lang.OutOfMemoryError: Java heap space
>     at com.webobjects.foundation.NSForwardException._runtimeExceptionForThrowable(NSForwardException.java:45)
>     at com.webobjects.eocontrol.EOEditingContext.handleError(EOEditingContext.java:2971)
>     at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4071)
>     at er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1302)
>     at com.webobjects.eoaccess.EODatabaseDataSource.fetchObjects(EODatabaseDataSource.java:589)
>     at com.webobjects.appserver.WODisplayGroup.fetch(WODisplayGroup.java:2132)
>     at er.extensions.appserver.ERXDisplayGroup.fetch(ERXDisplayGroup.java:135)
>     at er.directtoweb.pages.ERD2WListPage._fetchDisplayGroup(ERD2WListPage.java:461)
>     at er.directtoweb.pages.ERD2WListPage.setupPhase(ERD2WListPage.java:561)
>     at er.directtoweb.pages.ERD2WListPage.appendToResponse(ERD2WListPage.java:492)
>     at com.webobjects.appserver.WOSession.appendToResponse(WOSession.java:1385)
>     at er.extensions.appserver.ERXSession.appendToResponse(ERXSession.java:558)
>     at com.webobjects.appserver.WOApplication.appendToResponse(WOApplication.java:1794)
>     at er.extensions.appserver.ERXApplication.appendToResponse(ERXApplication.java:1994)
>     at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedPage(ERXComponentRequestHandler.java:190)
>     at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedSession(ERXComponentRequestHandler.java:235)
>     at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedApplication(ERXComponentRequestHandler.java:268)
>     at er.extensions.appserver.ERXComponentRequestHandler._handleRequest(ERXComponentRequestHandler.java:302)
>     at er.extensions.appserver.ERXComponentRequestHandler.handleRequest(ERXComponentRequestHandler.java:374)
>     at com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
>     at er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:2098)
>     at er.extensions.appserver.ERXApplication.dispatchRequest(ERXApplication.java:2063)
>     at com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144)
>     at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:226)
>     at java.lang.Thread.run(Thread.java:680)
> Caused by: java.lang.OutOfMemoryError: Java heap space
>     at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2145)
>     at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1922)
>     at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3425)
>     at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:481)
>     at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3120)
>     at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2288)
>     at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2709)
>     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2671)
>     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2621)
>     at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:842)
>     at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681)
>     at com.webobjects.jdbcadaptor.JDBCChannel._bindInputVariablesWithBindingsAndExecute(JDBCChannel.java:272)
>     at com.webobjects.jdbcadaptor.JDBCChannel._evaluateExpression(JDBCChannel.java:337)
>     at com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression(JDBCChannel.java:296)
>     at com.webobjects.jdbcadaptor.JDBCChannel.selectAttributes(JDBCChannel.java:220)
>     at com.webobjects.eoaccess.EODatabaseChannel._selectWithFetchSpecificationEditingContext(EODatabaseChannel.java:897)
>     at com.webobjects.eoaccess.EODatabaseChannel.selectObjectsWithFetchSpecification(EODatabaseChannel.java:234)
>     at com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(EODatabaseContext.java:3055)
>     at er.extensions.eof.ERXDatabaseContext._objectsWithFetchSpecificationEditingContext(ERXDatabaseContext.java:66)
>     at com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3195)
>     at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
>     at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
>     at er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1302)
>     at com.webobjects.eoaccess.EODatabaseDataSource.fetchObjects(EODatabaseDataSource.java:589)
>     at com.webobjects.appserver.WODisplayGroup.fetch(WODisplayGroup.java:2132)
>     at er.extensions.appserver.ERXDisplayGroup.fetch(ERXDisplayGroup.java:135)
>     at er.directtoweb.pages.ERD2WListPage._fetchDisplayGroup(ERD2WListPage.java:461)
>     at er.directtoweb.pages.ERD2WListPage.setupPhase(ERD2WListPage.java:561)
>     at er.directtoweb.pages.ERD2WListPage.appendToResponse(ERD2WListPage.java:492)
>     at com.webobjects.appserver.WOSession.appendToResponse(WOSession.java:1385)
>     at er.extensions.appserver.ERXSession.appendToResponse(ERXSession.java:558)
>     at com.webobjects.appserver.WOApplication.appendToResponse(WOApplication.java:1794)
>
> WARN  19.07 MB used/104.87 MB free [WorkerThread8] (ERXNSLogLog4jBridge.java:43)  - Ran out of memory, killing this instance
> FATAL 19.33 MB used/104.61 MB free [WorkerThread8] (ERXApplication.java:1935)  - Ran out of memory, killing this instance
> FATAL 19.33 MB used/104.61 MB free [WorkerThread8] (ERXApplication.java:1936)  - Ran out of memory, killing this instance
> OutOfMemoryError: Java heap space
>   at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2145)
>   at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1922)
>   at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3425)
>   at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:481)
>   at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3120)
>   at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2288)
>   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2709)
>   at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2671)
>   at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2621)
>   at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:842)
>   at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681)
>      ... skipped 7 stack elements
>   at er.extensions.eof.ERXDatabaseContext._objectsWithFetchSpecificationEditingContext(ERXDatabaseContext.java:66)
>      ... skipped 1 stack elements
>   at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
>   at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
>   at er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1302)
>      ... skipped 1 stack elements
>   at com.webobjects.appserver.WODisplayGroup.fetch(WODisplayGroup.java:2132)
>   at er.extensions.appserver.ERXDisplayGroup.fetch(ERXDisplayGroup.java:135)
>   at er.directtoweb.pages.ERD2WListPage._fetchDisplayGroup(ERD2WListPage.java:461)
>   at er.directtoweb.pages.ERD2WListPage.setupPhase(ERD2WListPage.java:561)
>   ... skipped 4 stack elements
> Exception in thread "Poller SunPKCS11-Darwin" java.lang.OutOfMemoryError: Java heap space
>     at sun.security.pkcs11.wrapper.PKCS11.C_GetSlotInfo(Native Method)
>     at sun.security.pkcs11.SunPKCS11.initToken(SunPKCS11.java:767)
>     at sun.security.pkcs11.SunPKCS11.access$100(SunPKCS11.java:42)
>     at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:700)
>     at java.lang.Thread.run(Thread.java:680)
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: ListPage MySQL OutOfMemory
      • From: Ron X <email@hidden>
References: 
 >ListPage MySQL OutOfMemory (From: Ron X <email@hidden>)

  • Prev by Date: Re: Wonder JavaMonitor problem
  • Next by Date: Re: Wonder JavaMonitor problem
  • Previous by thread: Re: ListPage MySQL OutOfMemory
  • Next by thread: Re: ListPage MySQL OutOfMemory
  • Index(es):
    • Date
    • Thread