高频调用'VM Periodic Task Thread'

时间:2015-07-05 11:27:49

标签: performance jvm h2

在树莓派上运行一个小码头应用程序我注意到在第一次访问后,应用程序继续燃烧3%的CPU。快速检查显示我的笔记本电脑上的情况也是如此,%也是如此。用strace检查我发现了一个永无止境的序列

...
12:58:01.999717 clock_gettime(CLOCK_MONOTONIC, {2923, 200177551}) = 0
12:58:01.999864 futex(0x693a0f44, FUTEX_WAIT_BITSET_PRIVATE, 1, {2923, 250177551}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
12:58:02.050090 futex(0x693a0f28, FUTEX_WAKE_PRIVATE, 1) = 0
12:58:02.050236 gettimeofday({1436093882, 50296}, NULL) = 0
12:58:02.050403 gettimeofday({1436093882, 50444}, NULL) = 0
12:58:02.050767 clock_gettime(CLOCK_MONOTONIC, {2923, 251228114}) = 0
...

(这是ubuntu 14.04上的Java 7,带有Jetty 9.3。*使用h2 db,以防万一为某人敲响任何铃声。)

我了解到捕获strace -f -tt -p <pid> -o out.txt,grep for clock_gettime,提取pid,sort和uniq -c以找到最常调用clock_gettime的线程就足够了。很好地绘制delta时间显示50毫秒的线。此外,PID可以在使用jvisualvm作为十六进制中的nid获取的线程转储中找到,并且结果是“ VM周期性任务线程”。但为什么这么经常?这似乎不是JVM的标准行为。

0 个答案:

没有答案