Currently if we fail to commit memory on linux or solaris we
do a VM exit. This failure has shown up in the nightly testing
in the last few builds. Because of the loss of the reservation
on the memory, this is a reasonable action to take. For background
see
https://jbs.oracle.com/bugs/browse/JDK-6843484
The original problem was
1) GC reserved memory
2) GC tries to commit memory and fails and looses
the reservation on the memory.
3) Other thread gets reserves the memory.
4) GC again tries to commit because it thinks
it still has the memory.
Dan considered reserving the memory again after 2)
but there would be a race with 3) so instead calls
a VM exit.
Should we consider after 2) reducing the size of
the VirtualSpace so that GC does not try to do
4)?
do a VM exit. This failure has shown up in the nightly testing
in the last few builds. Because of the loss of the reservation
on the memory, this is a reasonable action to take. For background
see
https://jbs.oracle.com/bugs/browse/JDK-6843484
The original problem was
1) GC reserved memory
2) GC tries to commit memory and fails and looses
the reservation on the memory.
3) Other thread gets reserves the memory.
4) GC again tries to commit because it thinks
it still has the memory.
Dan considered reserving the memory again after 2)
but there would be a race with 3) so instead calls
a VM exit.
Should we consider after 2) reducing the size of
the VirtualSpace so that GC does not try to do
4)?
- duplicates
-
JDK-8152193 GC heap memory usage does not take into consideration overcommit_memory setting
- Closed
- relates to
-
JDK-6843484 os::commit_memory() failures are not handled properly on linux
- Closed
-
JDK-8022772 HeapWord*PSOldGen::expand_and_allocate fails
- Closed