Java的垃圾回收机制是Java虚拟机的操作(JVM),JVM空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。
1.java垃圾回收的是无引用对象的内存空间,而不是对象本身
2.java怎么判断该对象是不是垃圾
引用计数:引用计数存储对特定对象的所有引用数,当应用程序创建引用时,jvm必须适当增减引用数,当某对象的引用数为0时,便可以进行垃圾收集,简单的说就是该对象没有引用能指引到它,该对象所在的空间就被当做垃圾回收
引用遍历:JVM遍历一遍程序中没有能指引到对象的路径,该对象所在的空间就被当做垃圾回收
java虽然有垃圾回收机制,但依然有内存泄露的风险
java内存泄露是指对象已经对程序没有用了,但它却一直存在在程序之中,系统无法回收,有时候会造成内存不足或系统崩溃
system.gc()能调用JVM让它开始回收垃圾内存吗?
不能,程序员使用该函数只能是提醒,告诉JVM你可以进行一次垃圾回收了,但回不回收,什么时候回收还是由JVM说了算(JVM还是比较牛的)
优缺点:Java中垃圾回收机制能自动释放内存空间,清除无用对象,减轻程序员的负担,变成效率提高,但是它本身的存在运行就减慢了程序的运行性能,不过利大于弊,否则java开发人员就不会把这种机制一直保存在java中。