我们有一个带有 java IO 操作的服务器应用程序。运行应用程序时,我们观察到 CompilerThread0 和 CompilerThread1 的 CPU 使用率分别为 45% 和 41%。应用程序此时正在为客户端提供 IO,例如连接、接收和发送。据我探索与此相关,我发现编译器线程用于 JIT 并用于提高性能。
我的问题是首先,为什么编译器线程占用大量 CPU 以及如何最小化它以便我们可以将 CPU 分配给其他线程。
提前致谢!
我们有一个带有 java IO 操作的服务器应用程序。运行应用程序时,我们观察到 CompilerThread0 和 CompilerThread1 的 CPU 使用率分别为 45% 和 41%。应用程序此时正在为客户端提供 IO,例如连接、接收和发送。据我探索与此相关,我发现编译器线程用于 JIT 并用于提高性能。
我的问题是首先,为什么编译器线程占用大量 CPU 以及如何最小化它以便我们可以将 CPU 分配给其他线程。
提前致谢!
我的问题是首先,为什么编译器线程占用大量 CPU
在正常情况下,JIT 编译器应该在您的应用程序运行一段时间后启动,以(逐步)编译频繁调用的类/方法。编译活动应该停止......一旦需要编译的所有代码都已编译。
如果编译活动没有停止,那么奇怪的事情正在发生。它可能是以下之一:
以及如何最小化这种情况,以便我们可以将 CPU 分配给其他线程。
有潜在的 JVM 选项可能会有所帮助,但我认为你最好弄清楚是什么原因造成的。