问题一:标记-复制算法为什么会导致更多的内存占用?
标记-复制算法为什么会导致更多的内存占用?
参考回答:
标记-复制算法需要有两块内存区域,因此会导致更多的内存占用。一个典型的例子是新生代的Survivor区。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615281
问题二:并发回收器如CMS/G1为什么需要预留足够的内存空间?
并发回收器如CMS/G1为什么需要预留足够的内存空间?
参考回答:
并发回收器如CMS/G1需要预留足够的内存空间,因为在垃圾收集阶段用户线程还需要持续运行,这些预留的内存空间将提供给用户线程使用。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615282
问题三:为什么在有GC的语言中,垃圾对象会持续占用内存?
为什么在有GC的语言中,垃圾对象会持续占用内存?
参考回答:
在有GC的语言中,垃圾对象会持续占用内存,直到下一次GC进行清理为止。这是因为垃圾回收器需要一定的时间来识别和清理不再使用的对象,这些对象在GC运行之前会一直占用内存。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615283
问题四:G1垃圾回收器是如何处理新对象分配的,并且如何确保在并发回收过程中新分配的对象不会被回收?
G1垃圾回收器是如何处理新对象分配的,并且如何确保在并发回收过程中新分配的对象不会被回收?
参考回答:
G1垃圾回收器为每一个Region设计了两个名为TAMS(Top at Mark Start)的指针,这两个指针把Region中的一部分空间划分出来用于并发回收过程中的新对象分配。在并发回收时,新分配的对象地址都必须要在这两个TAMS指针位置以上,以确保这些新对象默认不会被回收。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615285
问题五:JVM在启动时通常会怎样申请内存?
JVM在启动时通常会怎样申请内存?
参考回答:
JVM在启动时通常会一次性申请大块内存,这块内存被称为Reserved Heap。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/615286