垃圾回收策略:
1、引用计数,当对象引用为0时可删除;
2、对象引用遍历,GC删除不可到达的对象。
垃圾回收机制:
1、标记清除收集器
标记遍历可到达的对象,删除未标记对象并压缩。
2、标记压缩收集器
标记遍历可到达的对象,将标记对象复制到堆栈新域以便压缩。
3、复制收集器
将堆栈分为两个域,常称为半空间。每次仅使用一半的空间,jvm生成的新对象则放在另一半空间中。gc运行时,将可到达对象复制到另一半空间,从而压缩了堆栈。这种方法适用于短生存期的对象,持续复制长生存期的对象则导致效率降低。
4、增量收集器
增量收集器把堆栈分为多个域,每次仅从一个域收集垃圾。这会造成较小的应用程序中断。
5、分代收集器
把堆栈分为两个或多个域,用以存放不同寿命的对象。jvm生成的新对象一般放在其中的某个域中。过一段时间,继续存在的对象将获得使用期并转入更长寿命的域中。分代收集器对不同的域使用不同的算法以优化性能。
6、并发收集器
并发收集器与应用程序同时运行。在某点上(如压缩时)一般停止其他操作以完成特定的任务,但是因为其他应用程序可进行其他的后台操作,所以中断其他处理的实际时间大大降低。
7、并行收集器
并行收集器使用某种传统的算法并使用多线程并行的执行它们的工作。在多cpu机器上使用多线程技术可以显著的提高java应用程序的可扩展性。