----------------------------------------------------------------
BEFORE YOU POST, search the faq at <http://java.apache.org/faq/>
WHEN YOU POST, include all relevant version numbers, log files,
and configuration files.  Don't make us guess your problem!!!
----------------------------------------------------------------

Hello everyone,

my problem may be more a JVM problem than a JServ problem, but since I
can't be sure, here we go:

I'm developing and administering a WWW service that runs on Solaris
2.5.1 using Sun JDK 1.1.7, Apache 1.3.6 and Apache JServ 1.0. The JServ
part of the service hangs every few hours with a lot of "Out of memory"
errors in the error_log. The service works fine on a Linux box that is
using the same versions of JDK, Apache and JServ. All Apache and JServ
configuration files are exactly the same on both machines.

I tried increasing the maximum heap size to 128MB with the -mx128m
option. It works a little longer, but finally the whole system runs out
of memory and Apache can't even run CGI scripts. I turned on verbose
garbage collecting on both machines with the -verbosegc command line
argument. By observing error_logs I noticed that the Linux version is
using asynchronous garbage collecting but the Solaris version isn't. The
Solaris version expands its heap size very rapidly when I'm surfing
around in the service. The maximum heap size on the Linux box never
grows much over 4MB, unless I run it with -noasyncgc, in which case it
behaves exactly like the Solaris version. I also tried the Solaris
version on Solaris 2.6 and JDK 2.1.1 but it didn't help.

Can anyone tell what is going on?
Why is the Solaris version not using async gc?
Why async works but sync doesn't?
What can I do?

Here is an excerpt from the error_log of the Solaris version: 

<GC: freed 14068 objects, 146232 bytes in 187 ms, 4% free (149592/3404592)> 
  <GC: init&scan: 3 ms, scan handles: 165 ms, sweep: 19 ms, compact: 0 ms> 
<GC: managing allocation failure. need 1032 bytes, type=1, action=2> 
<GC: managing allocation failure. need 1032 bytes, type=1, action=3> 
<GC: managing allocation failure. need 1032 bytes, type=1, action=4> 
<GC: expanded object space by 942080 to 4346672 bytes, 25% free> 
<GC: managing allocation failure. need 8 bytes, type=2, action=1> 
<GC: freed 6261 objects, 65128 bytes in 202 ms, 17% free (763456/4346672)> 
  <GC: init&scan: 3 ms, scan handles: 183 ms, sweep: 16 ms, compact: 0 ms> 
<GC: managing allocation failure. need 8 bytes, type=2, action=2> 
<GC: managing allocation failure. need 8 bytes, type=2, action=3> 
<GC: managing allocation failure. need 8 bytes, type=2, action=4> 
<GC: expanded handle space by 212992 to 1051848 bytes, 25% free> 
<GC: managing allocation failure. need 1032 bytes, type=1, action=1> 
<GC: freed 9301 objects, 94552 bytes in 236 ms, 6% free (296824/4346672)> 
  <GC: init&scan: 2 ms, scan handles: 213 ms, sweep: 21 ms, compact: 0 ms> 
<GC: managing allocation failure. need 1032 bytes, type=1, action=2> 
<GC: managing allocation failure. need 1032 bytes, type=1, action=3> 
<GC: managing allocation failure. need 1032 bytes, type=1, action=4> 
<GC: expanded object space by 1056768 to 5403440 bytes, 25% free> 
<GC: managing allocation failure. need 24 bytes, type=2, action=1> 
<GC: freed 6623 objects, 68224 bytes in 260 ms, 19% free (1026688/5403440)> 
  <GC: init&scan: 3 ms, scan handles: 237 ms, sweep: 20 ms, compact: 0 ms> 

Here is an excerpt from the error_log of the Linux version: 

<GC(async): freed 63 objects, 3384 bytes in 650 ms, 18% free (771688/4280312)>
  <GC: init&scan: 3 ms, scan handles: 403 ms, sweep: 21 ms, compact: 223 ms>
<GC(async, interrupted): freed 0 objects, 0 bytes in 716 ms, 11% free
(481864/4280312)>
  <GC: init&scan: 3 ms, scan handles: 713 ms, sweep: 0 ms, compact: 0 ms>
<GC(async, interrupted): freed 5703 objects, 235160 bytes in 459 ms, 16% free
(714960/4280312)>
  <GC: init&scan: 3 ms, scan handles: 349 ms, sweep: 107 ms, compact: 0 ms>
<GC(async): freed 5420 objects, 248376 bytes in 609 ms, 13% free
(580136/4280312)>
  <GC: init&scan: 3 ms, scan handles: 373 ms, sweep: 23 ms, compact: 210 ms>
<GC(async): freed 199 objects, 6064 bytes in 741 ms, 13% free
(586200/4280312)>
  <GC: init&scan: 3 ms, scan handles: 415 ms, sweep: 22 ms, compact: 301 ms>
<GC(async, interrupted): freed 0 objects, 0 bytes in 381 ms, 13% free
(582816/4280312)>
  <GC: init&scan: 3 ms, scan handles: 378 ms, sweep: 0 ms, compact: 0 ms>
<GC(async): freed 63 objects, 3384 bytes in 690 ms, 13% free (586200/4280312)>
  <GC: init&scan: 3 ms, scan handles: 420 ms, sweep: 22 ms, compact: 245 ms>
<GC(async, interrupted): freed 0 objects, 0 bytes in 396 ms, 13% free
(582816/4280312)>
  <GC: init&scan: 3 ms, scan handles: 393 ms, sweep: 0 ms, compact: 0 ms>
<GC(async): freed 63 objects, 3384 bytes in 630 ms, 13% free (586200/4280312)>

Any help is appreciated. Many thanks in advance.

Timo


--
--------------------------------------------------------------
Please read the FAQ! <http://java.apache.org/faq/>
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Archives and Other:  <http://java.apache.org/main/mail.html>
Problems?:           [EMAIL PROTECTED]

Reply via email to