RE: [JIRA] Created: (CAY-620) DataObject memory management

From: Gentry, Michael \(Contractor\) ("Gentry,)
Date: Thu Aug 03 2006 - 09:42:30 EDT

  • Next message: Marcel: "Derby and 'public'"

    I don't consider this a bug. Doing a commitChanges() does not discard
    all objects from the DataContext after the commit -- after all, you
    might need them again. There are methods to discard (invalidate)
    objects from the DataContext if you wish, or you can create a new
    DataContext and allow the previous one to be garbage collected.

    /dev/mrg

    -----Original Message-----
    From: Paul Ponec (JIRA) [mailto:jir..pache.org]
    Sent: Thursday, August 03, 2006 6:05 AM
    To: cayenne-de..ncubator.apache.org
    Subject: [JIRA] Created: (CAY-620) DataObject memory management

    DataObject memory management
    ----------------------------

             Key: CAY-620
             URL: http://issues.apache.org/cayenne/browse/CAY-620
         Project: Cayenne
            Type: Bug

      Components: Cayenne Core Library
        Versions: 2.0 [STABLE]
     Environment: Oracle Application server was launched with -Xmx30m.
    Oracle DB version: Oracle Database 10g Enterprise Edition Release
    10.1.0.4.2 - Production With the Partitioning, OLAP and Data Mining
    options
    OS: Windows XP or Linux Fedora
        Reporter: Paul Ponec
        Priority: Minor

    Hi,

    I am reusing my instance of DataObject after calling
    context.commitChanges().
    In the case my application throws OutOfMemoryError exception after 30000
    inserts approximately on Oracle DB
    but I am expecting all resources will be released after the commit.

    The commit is preformed for each new data object in my plain code:
    public void run() {
        int MAX_LIMIT = 200*1000 ;
        DataContext context = DataContext.createDataContext();
            
        for (int i=0; i<=MAX_LIMIT; i++) {
            User user = (User)
    context.createAndRegisterNewObject(User.class);
            user.setAttrib1("1");
            user.setAttrib2("2");
            user.setAttrib3("3");
            context.commitChanges();
        }
    }

    Note:
    - No stack trace is available
    - It seems, a Derby DB works correctly on the same code.

    I have found a solution for the bug:
    Create new data context after commit by sample:
    context = DataContext.createDataContext();

    Regards
    Paul

    -- 
    This message is automatically generated by JIRA.
    -
    If you think it was sent incorrectly contact one of the administrators:
       http://issues.apache.org/cayenne/secure/Administrators.jspa
    -
    For more information on JIRA, see:
       http://www.atlassian.com/software/jira
    



    This archive was generated by hypermail 2.0.0 : Thu Aug 03 2006 - 09:57:59 EDT