1 JVM的内存模型和分区,每个区都是干什么的?
2 堆里面的分区有哪些?说说他们的特点?
Eden、from、to、老年区;
3 GC算法有哪些?怎么用?
引用计数法、标记清除法、标记压缩、复制算法;
1)引用计数法(一般不采用):
每个对象有一个计数器,计数器本身有消耗。
2)复制算法:
好处:没有内存的碎片
坏处:浪费了内存空间,多了一半永远是空的to区,假设对象100%存活(极端情况)
最佳使用场景:对象存活度较低的时候(新生区)
3)标记清除压缩算法:
清除:对没有标记的对象进行清除
压缩:防止内存碎片产生,再次扫描,向一端移动存活的对象。
好处:不需要额外的空间
坏处:浪费时间
适合用于老年区
4 轻GC和重GC分别在什么时候发生?