深入Java虚拟机

时间:2021-11-27 10:28:04

内存分配

1、对象优先在Eden区分配

2、大对象直接进入老年代

3、长期存活的对象将进入老年代

虚拟机给每个对象定义了一个年龄计数器。年龄计数器的工作原理?对象如果在Eden区出生并且经过第一次Minor GC之后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将对象年龄设为1.对象在Survivor区中每熬过一次Minor GC 的话,年龄就会加1,当他的年龄增加到一定程度(默认15岁,这个只可以通过虚拟机的参数调节-XX:MaxTenuringThreshold 来设置)的时候,就会被晋升到老年代中。

垃圾回收

1、垃圾收集算法

检查-清理算法

检查-整理算法

复制算法

分代算法

2、垃圾收集器

由于当前的虚拟机大都使用分代算法,所以垃圾收集器也是对该算法的实现。

新生代——Serial收集器、ParNew收集器、Parralle Scavenge收集器

老年代——Serial Old收集器、Parallel Old收集器、CMS(Concurrent Mark Sweep)收集器

内存管理

java技术体系的内存自动管理最终可以归结为自动化的解决了两个问题:给对象分配内存和回收分配给对象的内存。