我的java应用程序的cpu使用率更高(有时为80-100%)。我的应用程序在其中使用http数据传输。我使用jConsole检查了cpu使用情况。从那时我意识到一些线程池使用更多的cpu时间。我不知道如何在该池中找到线程。有人请帮我找到导致更多CPU使用的线程..
答案 0 :(得分:3)
尝试使用VisualVM而不是JConsole来监视您的应用程序。我不确定但VisualVM的线程分析器应该让我的功能更丰富。
答案 1 :(得分:2)
一种方法是使用完整的分析器,例如YourKit(您可以从他们的网站下载免费的评估版)。它会告诉你哪些线程正在占用CPU,以及它们到底在做什么。
答案 2 :(得分:2)
this等分析工具可以帮助您找到应用中的热点。
但是,为什么你认为使用大量CPU是件坏事?如果有工作要做,那么你想完成它,所以你将使用CPU。如果您有一个多线程应用程序,一些线程正在处理其他人从网络中读取内容,那么高CPU使用率可能正是应该发生的事情 - 例如,如果对检索到的数据进行了大量分析。
答案 3 :(得分:0)
使用JConsole中的topthreads插件可以快速显示忙线程忙于处理的内容...使用
启动它jconsole -pluginpath topthreads.jar
您可以在此处下载topthreads jar文件:http://lsd.luminis.eu/new_version_topthreads_jconsole_plugin/