Codenameone code name One中的System.gc()
Codenameone code name One中的System.gc(),codenameone,Codenameone,System.gc()()是否在Codename One中执行某些操作 在XCode中评测Ram时,我在Codename One应用程序中尝试了它,但似乎忽略了System.gc()。System.gc()已实现,但它是异步的,因为gc是一个单独的线程。您不应该正常调用它,因为它会严重影响性能。我们不支持的是测量可用RAM的数量。这在多任务操作系统中有点难做到。Java通过使用Xmx标志来实现这一点,但这很愚蠢,因为我们希望继续占用操作系统为我们提供的RAM。如果操作系统发送RAM低事件,我们将
System.gc()
()是否在Codename One中执行某些操作
在XCode中评测Ram时,我在Codename One应用程序中尝试了它,但似乎忽略了
System.gc()
。System.gc()
已实现,但它是异步的,因为gc是一个单独的线程。您不应该正常调用它,因为它会严重影响性能。我们不支持的是测量可用RAM的数量。这在多任务操作系统中有点难做到。Java通过使用Xmx
标志来实现这一点,但这很愚蠢,因为我们希望继续占用操作系统为我们提供的RAM。如果操作系统发送RAM低事件,我们将隐式运行GC。系统.GC()的行为
- 它可以同步执行垃圾收集
- 它可能触发异步垃圾回收
- 它可能被完全忽略
System.gc()
的调用
然而,这应该是没有实际意义的 在大多数情况下,调用
System.gc()
是个坏主意:
- 这是低效的。事实上,在最坏的情况下,它的效率极低
- 如果您这样做是因为您的应用程序空间不足,那么它不会有帮助
- 如果你这样做是因为你有一个内存泄漏,它不会有帮助
- 如果你这样做是因为你有一个资源泄漏,它可能没有帮助
- 如果您试图鼓励JVM将内存“返还”给操作系统,那么它可能不会有帮助。(JVM返回内存通常需要几个完整的GC周期。如果应用程序的堆要求是循环的,JVM可能会再次向操作系统请求内存。)