incubator-jena-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Seaborne (JIRA)" <>
Subject [jira] [Commented] (JENA-91) extremely large buffer is being created in ObjectFileStorage
Date Thu, 22 Sep 2011 17:41:26 GMT


Andy Seaborne commented on JENA-91:


Please could you try running "src-dev/tx/" on MS Windows for direct
mode and attach the entire output file to this JIRA (it details JREs and OS environment for
you but do add additional info as you see fit).  You need the latest code from SVN, including
the snapshot build of ARQ from today.

This is your test case.

It runs for me on Windows Vista, 64 bit, latest updates, with the Sun Java 7 JDK amongst others,
when TDB is in direct mode. It does not work in mapped mode (file delete issue).

> extremely large buffer is being created in ObjectFileStorage
> ------------------------------------------------------------
>                 Key: JENA-91
>                 URL:
>             Project: Jena
>          Issue Type: Bug
>          Components: TDB
>            Reporter: Simon Helsen
>            Assignee: Andy Seaborne
>            Priority: Critical
>         Attachments: JENA-91_NodeTableTrans_r1159121.patch, TestTransSystem.patch, TestTransSystem2.patch,
TestTransSystem3.patch, TestTransSystem4.patch
> I tried to debug the OME and check why a bytebuffer is causing my native memory to explode
in almost no time. It all seems to happen in this bit of code in com.hp.hpl.jena.tdb.base.objectfile.ObjectFileStorage
(lines 243 onwards)
>   // No - it's in the underlying file storage.
>         lengthBuffer.clear() ;
>         int x =, loc) ;
>         if ( x != 4 )
>             throw new FileException(""+loc+")["+filesize+"]["+file.size()+"]:
Failed to read the length : got "+x+" bytes") ;
>         int len = lengthBuffer.getInt(0) ;
>         ByteBuffer bb = ByteBuffer.allocate(len) ;
> My debugger shows that x==4. It also shows the lengthBuffer has the following content:
[111, 110, 61, 95]. This amounts to the value of len=1869495647, which is rather a lot :-)
Obviously, the next statement (ByteBuffer.allocate) causes the OME.

This message is automatically generated by JIRA.
For more information on JIRA, see:


View raw message