: I'm a new user of solr but I have worked a bit with Lucene before. I get 
: some out of memory exception when optimizing the index through Solr and 
: I would like to find out why. However, the only message I get on 
: standard output is: Jul 30, 2009 9:20:22 PM 
: org.apache.solr.common.SolrException log SEVERE: 
: java.lang.OutOfMemoryError: Java heap space
: 
: Is there a way to get a stack trace for this exception? I had a look 
: into the java.util.logging options and didn't find anything.

FWIW #1: OutOfMemoryError is a java "Error" not an "Exception" ... 
Exceptions and Errors are both Throwable, but an Error is not an 
Exception. this is a really importatn distinction (see below)

FWIW #2: when dealing with an OOM, a stack trace is almost never useful.  
as mentioned in other threads, a heapdump is the most useful diagnostic 
tool

FWIW #3: the formatting of Throwables in log files is 100% dependent 
on the configuration of the log manager -- the client code doing 
the logging just specifies the Throwable object -- it's up to the 
Formatter to decide how to output it.

Ok .. on to the meat of hte issue...

OOM Errors are a particularly devious class of errors: they don't 
neccessarily have stack traces (depending on your VM impl, and the state 
of the VM when it tries to log the OOM) ....
   http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4753347
   http://blogs.sun.com/alanb/entry/outofmemoryerror_looks_a_bit_better

...on any *Exception* you should get a detailed stacktrace in the logs 
(unless you have a really screwed up LogManger configs), but when dealing 
with *Errors* like OutOfMemoryError, all bets are off as to what hte VM 
can give you.


-Hoss

Reply via email to