diablo 1.5 died after 5 day uptime

Kurt Miller kurt at intricatesoftware.com
Fri May 26 10:07:34 PDT 2006


On Friday 26 May 2006 11:39 am, Vadim Goncharov wrote:
> 26.05.06 @ 20:32 Kurt Miller wrote:
> 
> >> >> I have an SMP (HTT) machine with 5.5-PRERELEASE, using official >>  
> >> diablo 1.5 jdk
> >> >> binaries from beginning of April. As suggested, I now run java with
> >> >> -XX:+UseMembar cmdline switch, that resolved problem with crashing
> >> >> application after startup.
> >> >> But today after 5 days uptime now-debugged-and-set-to-long-run server
> >> >> process
> >> >> have crashed, with 100M coredump file. What happened? Below are log  
> >> and
> >> >> gdb backtrace.
> >> >> As some additional info: I have limits in login.conf, 32M for  
> >> resident
> >> >> size
> >> >> and 256M for virtual mem size; yesterday when I looked at process  
> >> stats
> >> >> it was about 10M resident and 250M virtual - could be a reason?..
> >> >
> >> > Hi,
> >> >
> >> > It does appear that you've run out of vm.
> >> >
> >> > <snip>
> >> >> #21 0x0a3fceda in vm_exit_out_of_memory ()
> >> >>     from /usr/local/diablo-jdk1.5.0/jre/lib/i386/client/libjvm.so
> >>
> >> But so why it dies on signal 11 with scary logs and coredump, instead of
> >> descriptive out-of-memory diagnostics and graceful shutdown? Isn't that
> >> a bug ?
> >
> >> From what I can gather from the stack trace, the jvm was
> > in the process of a graceful shutdown but there wasn't enough
> > memory for it to pull it off. There is only so much you can
> > do to protect against out-of-memory errors when you need more
> > to report it nicely to the user.
> 
> Hmm, OK. Is there any way to tell Java that memory is about to end
> before killing ? Or may be a way to make GC to free some memory
> periodically? May be outside from java, undocumeted external
> signaling to diablo-jdk ? At last, does it respect login.conf limits
> at all, doing graceful shutdown before / trying to raise to hard limit ?
> 

If your goal is to limit the amount of memory the jvm uses,
I would recommend using the standard command line arguments
that control the heap size (-Xmx & -Xms) and leave your limits
high. Note that the jvm uses more memory then is controlled
by the -Xmx arg. You need to leave some head room for that if
your going to be setting your limits lower.

-Kurt


More information about the freebsd-java mailing list