答案:是没有的,垃圾回收处理机制是虚拟机内部机制和算法进行回收的。而 System.gc();只是通知JVM能够快速地释放对象当前占用的内存空间,不能确定是否会执行回收;
虚拟机有自己的内部算法和相应的机制去控制。System.gc();只是调用了。告诉虚拟机你可以去释放垃圾了。但是不会马上执行,虚拟机会根据自己内部机制和算法去。所以最好不要System.gc();
垃圾回收机制的两种方式:手动、自动;
自动是会不定期进行回收,以释放无用的空间(GC对内存堆中已经死亡或长期未使用的对象进行清除回收)
;
手动:是在程序中调用 System.gc();即调用system类中的 Runtime.getRuntime().gc();方法;当一个对象被回收前会调用类中finalize(),这个类是存在于
Object类中,表示该类被回收前的做的收尾工作;即使出现了异常,也不影响程序的执行,而且此方法抛出的是Throwable,表示可能是异常也可能是错误。
原文:https://www.cnblogs.com/mituzhifan001/p/11356360.html