gpt4 book ai didi

java - 在手机中调用 System.gc()

转载 作者:行者123 更新时间:2023-11-29 06:48:04 24 4
gpt4 key购买 nike

我必须维护一个 J2ME 应用程序。应用程序内部有很多 System.gc()。在调用 System.gc() 之前,所有属性都设置为 null。将属性设置为 null 有意义吗?调用 System.gc() 有意义吗? jvm 不应该在必要时调用垃圾收集器吗?

最佳答案

在良好的现代 VM 上,调用 System.gc() 通常毫无意义。将属性设置为 null 通常是没有意义的,除非这是使它们无法访问的唯一方法。

在不太复杂的 VM 上,您可能在移动设备上使用,如果引用不再在某个方法的中途使用但仍在范围内,则将引用设为 null 可能是有意义的。 (在像 Hotspot 这样的现代桌面 VM 上,这通常不再是必需的——VM 前面有您的代码,并且通常可以确定您是否仍将使用本地引用,而不管范围如何。)

现在,回到 System.gc(),从历史上看,移动 VM 确实比我们习惯的相当复杂的“完全成熟”的 VM(例如 Hotspot)更简单。然而:

  • 移动虚拟机近年来出现了很多——对象吞吐量,就像性能的其他方面一样,在许多设备上都有明显的提高;
  • 在任何情况下,System.gc() 都没有一致的、定义明确的行为。在某些设备上,它可能什么都不做。在其他情况下,与桌面 VM 一样,它可能会导致一种垃圾收集,与 VM 在应用程序运行时自动执行的正常“渐进”垃圾收集相比,实际上会损害性能。

所以我会非常谨慎地使用 System.gc()。

关于java - 在手机中调用 System.gc(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/899241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com