首先,新对象申请内存空间,然后Eden判断是否有足够的空间,如果有则新对象申请内存空间成功,否则使用Minor GC,回收不活跃的对象,然后判断Eden是否有最够的空间,如果有,则新对象空间申请成功,否则判断Servivor是否有足够的空间,如果有则讲Eden区的部分活跃对象复制到Survivor区,然后新对象空间申请成功,否则判断old区是否有足够的空间,如果有就先将Survivor区的部分活跃对象复制到old区,再讲Eden区的部分活跃对象复制到Survivor区,新对象空间申请成功,否则进行FullGC,之后直接判断Old区是否有足够的空间,如果有则重复上面的步骤,否则,抛出异常OutoMemoryError
原图地址:https://github.com/SweetPiglet/jvmFile.git