36System.gc()和Runtime.gc()会做什么事情?

1,374 阅读1分钟

笔记

都是提示jvm进行垃圾回收,但是何时未收由jvm决定

原文

java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的简写,两者的行为没有任何不同。唯一要能说有什么不同那就是在字节码层面上调用前者比调用后者短一点点,前者是1条字节码而后者是2条

System.gc():

invokestatic java/lang/System.gc()V

Runtime.getRuntime().gc():

invokestatic java/lang/Runtime.getRuntime()Ljava/lang/Runtime;
invokevirtual java/lang/Runtime.gc()V

实际运行起来性能几乎一样。不过如果对字节码大小非常非常敏感的话建议用System.gc()。从通常的代码习惯说也是System.gc()用得多些。

链接:www.nowcoder.com/questionTer…
来源:牛客网