【问题标题】:What does Keep-Alive-Timer mean in JVisualVM Threads investigator?JVisualVM 线程调查器中的 Keep-Alive-Timer 是什么意思?
【发布时间】:2016-09-05 05:16:38
【问题描述】:

这些 Keep-Alive-Timer 线程在左侧有白色标签,白色标签在下面没有描述其含义。我想知道这些 Keep-Alive-Timer 线程是如何创建的以及为什么。

实际上,我正在使用Timer 来检查程序中的心跳消息。每当心跳来临时,我都会安排一个新的TimerTask,延迟 6 秒。如果没有心跳,则会触发此TimerTask 并发送警报。

【问题讨论】:

    标签: java multithreading timer jvisualvm


    【解决方案1】:

    Keep-Alive-Thread 负责维护KeepAliveCache,它存储有关使用Keep-Alive 属性的http 连接的信息。如果您至少有一个这样的连接,就会有一个 Keep-Alive-Thread 监视它们。当您关闭所有保持活动连接时,该线程将被销毁。当您向空缓存添加新的保持活动连接时,JVM 会再次启动该线程。

    白色意味着线程不再存在。如您所见,您的 JVM 不断创建和销毁该线程。

    您似乎正在手动执行与跟踪心跳的计时器任务相同的工作。您在 6 秒后关闭这些保持活动连接,JVM 会破坏保持活动线程。您创建一个新连接,JVM 启动一个新的监视 Keep-Alive-Thread。

    如果你在你的 http 连接上使用Keep-Alive 属性,最好设置正确的超时时间,让 JVM 来做家务。

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 1970-01-01
      • 2012-09-18
      • 2018-04-17
      • 1970-01-01
      • 2010-09-16
      • 2021-12-15
      • 2015-06-02
      • 2016-09-07
      相关资源
      最近更新 更多