system.gc()出发finalize方法
来源:1-7 垃圾回收开篇
G91
2020-07-14 21:09:15
老师,您好,看了下system.gc()源码应该是不会马上去执行finalize方法的,这里演示是不是有些凑巧了?
1回答
大目
2020-07-14
您好,System.gc()是显式地建议垃圾收集器:你去打扫下战场吧。
多数情况下,垃圾收集器是很听话的,会触发垃圾回收。
所以,这个例子的代码执行N次,每次都会触发垃圾收集。
=====
PS.您说看了System.gc()的代码,请问是JDK几的版本啊?
不同版本的代码不同,早期代码中System.gc()里面会做一堆的判断,如果判断是true,才会调用Runtime.getRuntime().gc();
而课上用的JDK 8或者JDK 11,System.gc()都是不做任何判断的,直接调用Runtime.getRuntime().gc()
而Runtime.getRuntime().gc(); 是个Native方法了已经……
相似问题