java - 在永无休止的任务上使用 ScheduledExecutorService 时如何执行垃圾收集?

标签 java garbage-collection runnable scheduledexecutorservice

我有一个程序需要以大致固定的时间间隔运行,永远运行。我找到了 ScheduledExecutorService 并注意到它的 ScheduleAtFixedRate() 方法。 There's a simple tutorial here.

我的问题是,如果我的程序继续按预期运行(大约每 60 秒直到时间结束),如果我使用上述方法,是否需要做任何事情来处理垃圾回收?我需要关闭线程等吗?我应该运行 System.gc 吗?我还在习惯 Runnables。

目前我正在使用 while 循环和 thread.sleep(60000) 每 60 秒执行一次任务。但这种方式没有垃圾收集,运行几天后我的程序最终使用了超过 70% 的服务器内存。

感谢您提供的任何帮助。感谢您花时间帮助我解决新手问题。这基本上是我 Java 之旅的第二年!

最佳答案

无需采取任何行动。 GC会在需要时自动运行。

关于java - 在永无休止的任务上使用 ScheduledExecutorService 时如何执行垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709141/

相关文章:

java - OOM 使用 CRON 但不使用 SHELL

C# 托管内存泄漏

Java多线程使用同步不是线程安全的

android - postDelayed(Runnable runnable, Long delayMilliSeconds) 方法是如何工作的?

java - FixedCredentialsProvider 在调用 Google Cloud 服务时给出未经授权的异常

Java服务器套接字不重用地址

JavaMail 通过具有 SSO 身份验证的 Exchange 服务器

java - 即使Xms = Xmx,G1GC也会向操作系统释放内存吗?

c# - .NET 能否在运行时检测到 "irrelevant"代码并对其进行垃圾回收?

java - Android:来自可运行的异步任务 - “Activity has leaked window that was originally added here”