Allocation Failure happens when there isn't enough free space to create new objects in Young generation. Allocation failures triggers Young GC.html
On Linux, the JVM can trigger a GC if the kernel notifies there isn't much memory left via mem_notify.java
The GC locker prevents GC from occurring when JNI code is in a critical region. If GC is needed while a thread is in a critical region, then it will allow them to complete, i.e. call the corresponding release function. Other threads will not be permitted to enter a critical region. Once all threads are out of critical regions a GC event will be triggered.oracle
Promotion Failure happens when there is no continuous memory space to promote larger object, even though total free memory is large enough. This is problem is called as heap fragmentation. Promotion Failure typically triggers Full GC.app
The CMS collector uses one or more garbage collector threads that run simultaneously with the application threads with the goal of completing the collection of the tenured generation before it becomes full. In normal operation, the CMS collector does most of its tracing and sweeping work with the application threads still running, so only brief pauses are seen by the application threads. However, if the CMS collector is unable to finish reclaiming the unreachable objects before the tenured generation fills up, or if an allocation cannot be satisfied with the available free space blocks in the tenured generation, then the application is paused and the collection is completed with all the application threads stopped. The inability to complete a collection concurrently is referred to as concurrent mode failure and indicates the need to adjust the CMS collector parameters. Concurrent mode failure typically triggers Full GC.jvm
bugs.openjdk.java.net/browse/JDK-…ui
www.zhihu.com/question/61…atom
docs.oracle.com/javase/8/do…spa
docs.oracle.com/javase/8/do….net
更多文章,請關注公衆號:二進制之路