Java中引入了垃圾回收机制,大大提高了开发效率Java中的垃圾回收机制相当于饭店服务员,当这个桌子没人使用并且满了的情况下,服务员去将他清理干净。
垃圾回收机制主要的两个事情就是一发现无用的对象二回收无用的对象。
分代垃圾回收机制中,将垃圾分类分为三种状态:年轻代、年老代、持久代,JVM将堆内存划分为Eden,Survivor和Tenured/Old空间。
再垃圾回收过程中,新创建的对象绝大多数会存在Eden中,当Eden满了或者达到一定比例不能创建对象,则触发垃圾回收,将无用对象清除,再将剩余对象复制到Survivor(s1)中,同时清空Eden区,当Eden区又满了的时候,会将s1中不能清空的对象复制到另一个Survivor(s2)中,同时将Eden中不能清空的复制到s1中,保证Eden和s1均被清空,重复多次没有被清理的对象会被复制到年老代中当年老代区满了,则会触发一次完整的垃圾回收,这种回收用于年轻代年老代区域,成本较高,会对性能产生影响,我们可以在代码中写入System.gc()
但是并不一定会成功进行一次完整的垃圾回收,这个代码只是向系统做出了建议,但是执行或是不执行并无法决定,这个垃圾回收的执行由他自己说了算