jvm内存模型
程序计数器,虚拟机栈,本地方法栈,java堆,方法区
1-引用计数法
优点:计数器为0时直接可以回收,效率高
缺点:不能循环引用,每多/少一个引用就要计数器+1,-1.
2-复制法
优点:没有内存碎片,
缺点:分为两个内存区域使得使用率方面不够友好,存活对象多的时候移动量太大影响效率。
应用环境:回收的对象多的时候。
3-标记-清楚法
优点:不需要移动对象
缺点:因为空间不连续,内存分配效率底,有内存碎片
应用环境:
4-标记-压缩法
优点:没有内存碎片
缺点:需要移动对象,
应用环境:回收的对象少的时候
5-增量法
优点:线程交替回收垃圾,程序挂起时间不是连续的,有间隔的
缺点:优点也就是缺点,线程交替越多,资源耗得也多,时间上加起来也更多。
应用环境:程序不能挂起太久
6-分代
使用结合,复制,压缩。对应区域适合哪种gc算法就用哪种。