When running an application that causes GC to run out of memory I
am observing a behavior that I am not sure is entirely correct. I am
using a FullAdaptiveSemiSpace configuration on RedHat 9.0 (Intel)
on a machine with 2GB phisical memory (I set the minimum heap
size to 1.8GB: -Xms1800M ). The VM is (unfortunately) modified,
but not in a way that should disturb handling of the out-of-memory
When GC realize that it is running out of memory, it issues the
GC Warning: Possible VM range imbalance -
Allocator.allocSlowBody failed on request of 56 on space ss1
Then it attempts to perform a GC and actually succeeds:
[GC 2 Start 1543.71 s 736632KB -> 42100 KB 336.06 ms]
It is however still throwing an OutOfMemoryError:
Exception in thread "Thread-208": Throwable.printStackTrace(): We
are trying to dump the stack of an OutOfMemoryError.
Throwable.printStackTrace(): We'll use the VM.sysWriteln()
Throwable.printStackTrace(): instead of the System.err stream, to
The machine I am using to run this application is an SMP and
multiple threads may access the allocator at the same time. Is it
possible, that while an attempt is taken to handle the out-of-memory
error, some other thread on a differen processor tries to allocate an
object and thus disturbs the entire process?
Log in to post a comment.