垃圾收集后,JVM长时间停留在最大CPU

时间:2016-11-03 20:06:51

标签: java jvm cpu daemon

我已跟踪进程资源管理器中的违规线程

  

的Ntoskrnl.exe!memset的+ 0x64a   ntoskrnl.exe中!KeWaitForMultipleObjects + 0xd52   ntoskrnl.exe中!则函数+ 0x19f   ntoskrnl.exe中!PoStartNextPowerIrp + 0xbd4   ntoskrnl.exe中!PoStartNextPowerIrp + 0x186d   ntoskrnl.exe中!IoFreeErrorLogEntry + 0x2b7   的jvm.dll!JVM_ResolveClass + 0x5e2c6   的jvm.dll!JVM_ResolveClass + 0x5e4f6   的jvm.dll!JVM_ResolveClass + 0x3353b   的jvm.dll!JVM_ResolveClass + 0x4b604   的jvm.dll!JVM_FindSignal + 0x625e   msvcr100.dll!endthreadex + 0x43中   msvcr100.dll!endthreadex + 0xdf   KERNEL32.DLL!BaseThreadInitThunk + 0xd中   NTDLL.DLL!RtlUserThreadStart + 0×21

它似乎映射到这个Java线程

  

"服务主题"守护进程prio = 6 tid = 0x000000000cc56800 nid = 0xe24   runnable [0x0000000000000000] java.lang.Thread.State:RUNNABLE

     

锁定可拥有的同步器:      - 没有

什么是Java服务线程?为什么它会被卡在高CPU中?

这是Glassfish服务器3.2.1。没有其他活动正在进行中。使用的堆占总数的一小部分。奇怪的是,该线程的堆栈跟踪是空的,可能是JVM内部线程之一吗?

更新:我想我找到了触发器。创建了很多对象,然后丢弃GC-ed。我可以看到堆从1500 MB到大约100 MB。虽然Java说它一切都很好,但是在CPU最大化之后的某个时候。它可能是一些讨厌的后遗症或垃圾收集中的错误。有谁知道那里的内脏? 它在垃圾收集后长时间保持最大值,并且看起来不像正常的GC操作。之后有许多后续的GC。

0 个答案:

没有答案