我们有一个带有java IO操作的服务器应用程序。运行应用程序时,我们观察到CompilerThread0和CompilerThread1的CPU使用率占用了45%和41%的CPU。此应用程序此时正在为客户端提供IO,如连接,接收和发送。据我所研究,我发现compilesteread用于JIT并提高性能。
我的问题首先是,为什么它为compiletrareads占用了大量CPU,以及如何最小化它以便我们可以将CPU提供给其他线程。
提前致谢!
答案 0 :(得分:4)
我的问题首先是为什么它为编译器线程占用了大量的CPU
在正常情况下,JIT编译器应该在应用程序运行一段时间后(逐步)编译经常调用的类/方法。一旦编译了所有需要编译的代码,编译活动就会消失。
如果编译活动没有消失,那么就会发生一些奇怪的事情。它可能是以下之一:
以及如何最小化这个,以便我们可以将CPU提供给其他线程。
可能有一些JVM选项可能有所帮助,但我认为你最好找出造成这种情况的原因。