GC其实是Java 回收的一个机制
在Java虚拟机中,存在自动内存管理和垃圾清扫机制
原因:
电脑的内存大小的不变的,当我们使用对象的时候,如使用New关键字的时候,就会在内存中生产一个对象,但是我们在使用JAVA开发的时候,当一个对象使用完毕之后我们并没有手动的释放那个对象所占用的内存,就这样在使用程序的过程中,对象越来越多,当内存存放不了这么多对象的时候,电脑就会崩溃了,JAVA为了解决这个问题就推出了这个自动清除无用对象的功能,或者叫机制,这就是GC,有个好听是名字叫垃圾回收,其实就在用来帮你擦屁股的,好让你安心写代码,不用管内存释放,对象清理的事情了。
一:回收时间:
1、系统空闲的时候。
2、系统自身决定,不可预测的时间/调用System.gc()的时候。
(说明:此处调用gc方法只是提醒系统可以进行回收了,什么时候回收,还是系统说了算,说白了就是你可以上奏,取决权还是在皇上)
3、新生代、老年代(可能在加上一个永生代)结构,能提出minor gc/full gc
内存的分配是发生在新生代中的。当一个对象存活时间足够长的时候,它就会被复制到老年代中。对于不同的世代可以使用不同的垃圾回收算法。(进行世代划分的出发点是对应用中对象存活时间进行研究之后得出的统计规律。一般来说,一个应用中的大部分对象的存活时间都很短。比如局部变量的存活时间就只在方法的执行过程中。基于这一点,对于新生代的垃圾回收算法就可以很有针对性)。
拓展一下:
Minor GC ,Full GC 触发条件
Minor GC触发条件:当Ede