Java自动调用垃圾收集器,那么为什么我们需要手动调用垃圾收集?
我们不需要它们。事实上,在大多数情况下,调用
System.gc()是 有害的应用程序的性能 。有关详细说明,请参见我对“为什么调用systemgc的不良做法”的回答。
什么时候应该使用System.gc()
如果应用程序知道它将进入一个无事可做的阶段,并且用户不太可能注意到垃圾回收,则可以通过调用
System.gc()来阻止用户将来出现GC暂停。
缺点包括:
- 调用
System.gc()
通常会触发一个完整的GC,而该GC所需的时间比“新空间”的GC要长得多。 - 用户可能实际上在乎/注意到。例如,如果您
System.gc()
在游戏的“关卡”之间调用,则使加载下一个关卡花费的时间更长。 - 通过强制使用GC,您将导致JVM使用额外的CPU周期等,这可能会干扰用户在其计算机上执行的 其他 *** 作。
(
System.gc()在单元测试中以及在系统调试期间,也可能有正当的理由来调用。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)