首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GC正在使用Java长时间运行计时器

GC正在使用Java长时间运行计时器
EN

Stack Overflow用户
提问于 2015-11-27 14:26:17
回答 1查看 221关注 0票数 2

我有一个java.util.Timer,我正在调度TimerTasks,它每24小时在凌晨3:00运行一次,但是5-8天之后,GC消耗了计时器,因为计时器实例不再存在,所以我的所有任务都被取消了。

我怎么才能阻止这一切?

我用:

代码语言:javascript
运行
复制
t.schedule(timerTask, date);

然后任务本身再次启动(当任务被执行时,也调用再次调度此任务的方法)

定时器的定义如下:

代码语言:javascript
运行
复制
public static Timer t = new java.util.Timer();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-27 14:34:16

static变量是定义它们的class的一部分,并在加载类时进行初始化。GC可能会在某个时候决定卸载不再需要的类(特别是当内存较低,挂起的操作需要更多内存时)。这就是你在这里可能会发生的事。您可以尝试将Timer对象创建为类的非静态成员,该类的实例仍由GC引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33959472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档