我写了一个Java程序来下载HTML页面。但CPU使用率接近100%,而网络使用率低于3%。好像CPU成了我的瓶颈。如何削减CPU使用率?
答案 0 :(得分:6)
使用分析器(我喜欢VisualVM),找出瓶颈并修复它!
答案 1 :(得分:5)
如果你有一个连续的while循环,那么在迭代之间给你的程序一些sleep时间。单独下载网页不应该导致大量的资源利用,你可能想查看一个分析器,找出最新的瓶颈。也许在这里发布代码可以让我们帮助你一点。
答案 2 :(得分:3)
确定问题的一个非常简单的事情就是抓住一些堆栈跟踪。 CTRL- / CTRL断/ jstack / JConsole的/ VisualVM的。如果该程序灾难性地花费大量时间来解决性能问题(合理可能),那么您应该很容易看到问题。
答案 3 :(得分:2)
如果你的CPU使用率很长一段时间接近100%,那么很可能你的代码中有一个错误(无限循环或其他东西)。尝试分析您的应用程序,看看发生了什么。从代码中的各个点打印当前时间开始。如果你仍然无法找到它,将需要一个分析器。
答案 4 :(得分:1)
也许你过快地查询数据......
我会尝试将代码更改为事件驱动的通知。
问候。
答案 5 :(得分:1)
当你读,你一次读一个字符/字节?这将加载操作系统。
使用BufferedReader,和/或尝试使用read(char [] ...)进行读取 或readLine()取决于您正在阅读的内容。
答案 6 :(得分:0)
您是否有机会使用内置的Java XML DOM解析HTML?根据过去的经验,它可能会导致一些相当大的CPU使用率(而且这是我见过的最慢的实现,老实说)。如果是这样,您可能需要考虑用于XML解析的第三方库(例如JDOM)。