[Pellet-users] Pellet and out of memory (heap space)

Allyson Lister a.l.lister at newcastle.ac.uk
Fri Jan 25 11:33:57 UTC 2008


Hi all,

Thanks a lot for providing Pellet: I'm using version 1.5.0.

I have had a problem recently that, no matter how much memory I give Pellet
(up to 2G, which is all I have), it runs out of heap space without a log
message at all. I've tried a number of things to get the logging turned on,
but nothing appears before the program runs out of memory.

I've tried the following:

I turned on logging by setting the log4j.properties as shown in the text at
the bottom of this email. However, the reasoning failed after, at most, 2
minutes, and the logging told me nothing related to the error. The most
information I was able to get was:

DEBUG [main] (ModelReader.java:116) - Reading
file:///media/share/unsynched/IdeaProjects/MFO/trunk/owl/tests/protege4/together.owl
INFO [main] (KnowledgeBase.java:1473) - Expressivity: SHIF(D), Classes: 363
Properties: 17 Individuals: 20 Strategy: SHINStrategy
DEBUG [main] (RoleTaxonomyBuilder.java:74) - Properties: 43
INFO [main] (ABox.java:1530) - ABox consistency for 0 individuals
java.lang.OutOfMemoryError: Java heap space
at java.util.BitSet.ensureCapacity(BitSet.java:136)
at java.util.BitSet.set(BitSet.java:261)
at org.mindswap.pellet.DependencySet.<init>(DependencySet.java:97)
at org.mindswap.pellet.DisjunctionBranch.tryBranch(DisjunctionBranch.java
:175)
at org.mindswap.pellet.Branch.tryNext(Branch.java:99)
at org.mindswap.pellet.CompletionStrategy.applyDisjunctionRule(
CompletionStrategy.java:1274)
at org.mindswap.pellet.CompletionStrategy.applyDisjunctionRule(
CompletionStrategy.java:1228)
at org.mindswap.pellet.SHOIQStrategy.complete(SHOIQStrategy.java:244)
at org.mindswap.pellet.ABox.isConsistent(ABox.java:1606)
at org.mindswap.pellet.ABox.isConsistent(ABox.java:1490)
at org.mindswap.pellet.KnowledgeBase.consistency(KnowledgeBase.java:1567)
at org.mindswap.pellet.KnowledgeBase.isConsistent(KnowledgeBase.java:1588)
at org.mindswap.pellet.jena.OWLReasoner.isConsistent(OWLReasoner.java:243)
at org.mindswap.pellet.Pellet.checkConsistency(Pellet.java:251)
at org.mindswap.pellet.Pellet.run(Pellet.java:459)
at org.mindswap.pellet.Pellet.main(Pellet.java:900)


I've tried the same thing via Tweezers (
http://www.mindswap.org/~tw7/work/profiling/code/), and I get the same
result: out of heap space, and no messages or stats. I really have no idea
where to go from here in terms of optimizing my ontology (call it MFO). It's
not a big ontology, and before I imported a second ontology (SBO) into MFO,
it was reasoning both with Fact and Pellet. Now I have the import,
everything's ground to a halt. (Prior to the import, I had simply created
classes directly in MFO that matched those from SBO that I was interested
in. This means switching to the import statement didn't change the
properties/relationships at all.)

In order to see if it was simply the import statement, I've artifically
merged the two OWL files into a single OWL file (even though SBO and MFO
retain their own namespaces). Even that didn't work.

I'm really all out of ideas as to how to approach this problem. I can't get
any useful stats or logs out of either Pellet or Tweezers. Any help you
could give would be much appreciated!

Let me know if I should send around my OWL files.


Thanks,
Allyson :)


log4j.properties:

log4j.rootLogger=warn, stderr

# Set up logging to include a file record of the output
# Note: the file is always created, even if there is
# no actual output.
# log4j.rootLogger=info, stderr, R

# Example of switching on debug level logging for part of tree
log4j.logger.org.mindswap.pellet.jena.PelletQueryExecution=warn

log4j.logger.org.mindswap.pellet.taxonomy.Taxonomy=debug
log4j.logger.org.mindswap.pellet.KnowledgeBase=info
log4j.logger.org.mindswap.pellet.ABox=INFO
# log4j.logger.org.mindswap.pellet.dig.PelletDIGServer=debug
log4j.logger.org.mindswap.pellet.utils.SizeEstimate=debug
log4j.logger.org.mindswap.pellet.jena.ModelReader=debug
log4j.logger.org.mindswap.pellet.utils.SizeEstimate=info
log4j.logger.org.mindswap.pellet.query.QueryEngine=off
log4j.logger.org.mindswap.pellet.test.WebOntTest=debug
og4j.logger.org.mindswap.pellet.DependencyIndex=debug
og4j.logger.org.mindswap.pellet.Node=debug

# Log format to standard out
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's category. Note that printing file
# name and/or line number is extremely slow.
log4j.appender.stderr.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# log4j.appender.stdout.layout.ConversionPattern=%5p (%c{1}) - %m%n

# Log format to standard error
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's category. Note that printing file
# name and/or line number is extremely slow.
# log4j.appender.stderr.layout.ConversionPattern=%5p [%c{1}] - %m%n
log4j.appender.stderr.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

# File based log output
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=pellet.log
log4j.appender.R.MaxFileSize=5000KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout


log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.owldl.com/pipermail/pellet-users/attachments/20080125/81ffbd30/attachment-0001.htm 


More information about the Pellet-users mailing list