问题一:在堆内存中,新创建的对象通常首先被分配到哪里?
在堆内存中,新创建的对象通常首先被分配到哪里?
参考回答:
Eden区。当Eden区没有足够的空间进行对象分配时,虚拟机会执行一次Minor GC(年轻代垃圾回收)。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627147
问题二:Minor GC后,存活的对象会去哪里?
Minor GC后,存活的对象会去哪里?
参考回答:
Minor GC后,存活的对象会进入Survivor区的From区。如果From区内存不足,这些对象将直接进入Old区(老年代)。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627148
问题三:什么样的对象会直接进入老年代?
什么样的对象会直接进入老年代?
参考回答:
大对象(需要大量连续内存空间的对象)会直接进入老年代,以避免在Eden区和两个Survivor区之间发生大量的内存拷贝。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627149
问题四:虚拟机如何跟踪对象的年龄?
虚拟机如何跟踪对象的年龄?
参考回答:
为每个对象定义了一个年龄(Age Count)计数器。对象每经过一次Minor GC,其年龄就会加1。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627150
问题五:对象在什么情况下会基于年龄从新生代进入老年代?
对象在什么情况下会基于年龄从新生代进入老年代?
参考回答:
当对象的年龄达到设定的阈值(默认是15次)时,该对象会从新生代进入老年代。此外,还有一个动态对象年龄判定机制,当幸存区中年龄从小到大累加的对象大小超过幸存区的一半时,会使用当前累加到的年龄作为新的阈值,年龄大于此阈值的对象将直接进入老年代。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/627154