Есть ли какие-либо предложения по сокращению использования процессора в Java?
Вопрос
Я написал Java-программу для загрузки HTML-страницы.Но загрузка процессора близка к 100%, в то время как загрузка сети ниже 3%.Похоже, этот процессор стал моим узким местом.Как мне сократить загрузку процессора?
Решение
Используйте профилировщик (мне нравится VisualVM ), определите узкое место и исправьте его! р>
Другие советы
Если у вас есть непрерывный цикл while, дайте вашей программе несколько время сна между итерациями. Сама по себе загрузка веб-страниц не должна приводить к такому интенсивному использованию ресурсов, однако, вы можете захотеть заглянуть в профилировщик, чтобы выяснить, в чем заключается ваше узкое место. Возможно, размещение кода здесь позволит нам немного помочь вам.
Одна очень простая вещь, которую вы можете сделать, чтобы выявить проблему, - просто взять несколько следов стека. ctrl- / Ctrl-Break / jstack / JConsole / VisualVM. Если программа катастрофически тратит много времени там, где есть проблема с производительностью (вполне вероятно), то вы должны легко увидеть проблему.
Если ваша загрузка ЦП в течение длительного периода времени близка к 100%, то, скорее всего, в вашем коде есть ошибка (бесконечный цикл или что-то в этом роде). Попробуйте профилировать свое приложение, чтобы увидеть, что происходит. Начните с печати текущего времени из разных точек вашего кода. Если вы все еще не можете это выяснить, потребуется профилировщик.
Возможно, вы проводите опрос данных слишком быстро...
Я бы попытался изменить код на уведомление, управляемое событиями.
С уважением.
Когда вы читаете, считываете ли вы символ / байт за раз?Это немного загрузит операционную систему.
Используйте BufferedReader и / или попробуйте прочитать, используя либо read(char[]...) , либо readLine() в зависимости от того, что вы читаете.
Вы случайно не анализируете HTML, используя встроенный в Java XML DOM материал? Исходя из прошлого опыта, это может привести к довольно здоровенному использованию процессора (и, честно говоря, это самая медленная реализация, которую я когда-либо видел). Если это так, вы можете использовать стороннюю библиотеку для анализа XML ( JDOM , для экземпляр). р>