incubator-jena-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simon Helsen (JIRA)" <>
Subject [jira] [Commented] (JENA-91) extremely large buffer is being created in ObjectFileStorage
Date Thu, 18 Aug 2011 19:29:30 GMT


Simon Helsen commented on JENA-91:

With TestTransSystem I cannot currently reproduce it either. I'll need some time to look at
what we do different (either in the tests or in our integration). 

the only clear difference (but I can't see how it matters) is that we keep the sConn object
for each store until we suspend (release) the location. In TestTransSystem I notice that such
an object is not kept past one operation. Under the hood, it seems that the StoreConnection
caches these StoreConnection objects, however, you release them each time you invoke make,
so there is a difference

> extremely large buffer is being created in ObjectFileStorage
> ------------------------------------------------------------
>                 Key: JENA-91
>                 URL:
>             Project: Jena
>          Issue Type: Bug
>          Components: TDB
>         Environment: Windows (and I presume any little endian system)
>            Reporter: Simon Helsen
>            Assignee: Andy Seaborne
>            Priority: Critical
>         Attachments: TestTransSystem.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