Hi there,

> com.hp.hpl.jena.tdb.sys.CachingTDBMaker.createDatasetGraph(CachingTDBMaker.java:46)
  at
org.topbraid.jenax.tdb.TBDatasetGraphMakerTDB.createDatasetGraph(TBDatasetGraphMakerTDB.java:152)
>

What's the full lifecycle of the test?

In your tests, how were you releasing resources after a test has run when running with TDB 0.8.9? (Assuming GC is not enough). BTW These implementation classes are likely to be removed as all datasets are now created and managed by the transaction subsystem.

You seem to be calling directly into implementation classes - it is better to use the API. But as you are asking for a fresh, in-memory TDB store each time,

The API calls are:

TDBFactory.createDatasetGraph
TDBFactory.release

but remember "release" is forceful - it assumes you have closed all transactions (or finished other actions if not used in a transaction) and will evict the dataset regardless.

Named memory locations are now provided.

        Andy

On 27/07/12 20:04, Willie Milnor wrote:
Hi,



We have a number of automated tests which perform various operations on a
graph stored in TDB.  When we were using using TDB 0.8.9, we had no memory
issue running the tests.  We are now using 0.9.2 and we are getting
OutOfMemory errors while running the same tests and allocating the same
memory (see the stack trace below).  Even if we double the heap space size,
we still see the errors.  Is there something different we should be doing
with the updated version of the TDB library?



java.lang.OutOfMemoryError: Java heap space

                 at java.util.HashMap.<init>(Unknown Source)

                 at java.util.LinkedHashMap.<init>(Unknown Source)

                 at
org.openjena.atlas.lib.cache.CacheImpl.<init>(CacheImpl.java:45)

                 at
org.openjena.atlas.lib.cache.CacheLRU.<init>(CacheLRU.java:37)

                 at
org.openjena.atlas.lib.CacheFactory.createCache(CacheFactory.java:40)

                 at
org.openjena.atlas.lib.CacheFactory.createCache(CacheFactory.java:31)

                 at
com.hp.hpl.jena.tdb.nodetable.NodeTableCache.<init>(NodeTableCache.java:65)

                 at
com.hp.hpl.jena.tdb.nodetable.NodeTableCache.create(NodeTableCache.java:56)

                 at
com.hp.hpl.jena.tdb.setup.Builder$NodeTableBuilderStd.buildNodeTable(Builder.java:88)

                 at
com.hp.hpl.jena.tdb.setup.DatasetBuilderStd$NodeTableBuilderRecorder.buildNodeTable(DatasetBuilderStd.java:387)

                 at
com.hp.hpl.jena.tdb.setup.DatasetBuilderStd.makeNodeTable(DatasetBuilderStd.java:298)

                 at
com.hp.hpl.jena.tdb.setup.DatasetBuilderStd._build(DatasetBuilderStd.java:165)

                 at
com.hp.hpl.jena.tdb.setup.DatasetBuilderStd.build(DatasetBuilderStd.java:155)

                 at
com.hp.hpl.jena.tdb.setup.DatasetBuilderStd.build(DatasetBuilderStd.java:68)

                 at
com.hp.hpl.jena.tdb.sys.DatasetGraphSetup.createDatasetGraph(DatasetGraphSetup.java:32)

                 at
com.hp.hpl.jena.tdb.sys.CachingTDBMaker.createDatasetGraph(CachingTDBMaker.java:46)

                 at
org.topbraid.jenax.tdb.TBDatasetGraphMakerTDB.createDatasetGraph(TBDatasetGraphMakerTDB.java:152)

                 at
org.topbraid.jenax.tdb.TBDatasetGraphMakerTDB.createDatasetGraphTDB(TBDatasetGraphMakerTDB.java:31)

                 at
org.topbraid.tdb.TestTDBBufferingGraph.getDelegatingGraph(TestTDBBufferingGraph.java:38)

                 at
org.topbraid.core.graph.AbstractTestDelegatingGraph.getGraph(AbstractTestDelegatingGraph.java:178)

                 at
org.topbraid.core.graph.AbstractTestGraph.testBulkUpdate(AbstractTestGraph.java:281)

                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)

                 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)

                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)

                 at java.lang.reflect.Method.invoke(Unknown Source)

                 at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)

                 at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

                 at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)

                 at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

                 at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

                 at
org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)

                 at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)





Willie Milnor

Sr. Semantic Solutions Developer

TopQuadrant, Inc.

330 John Carlyle Street

Suite 180

Alexandria, VA 22314

703.299.9330

www.topquadrant.com



Cell: 410.971.7788


Reply via email to