Есть ли какие-либо предложения по сокращению использования процессора в Java?

StackOverflow https://stackoverflow.com/questions/833638

  •  08-07-2019
  •  | 
  •  

Вопрос

Я написал Java-программу для загрузки HTML-страницы.Но загрузка процессора близка к 100%, в то время как загрузка сети ниже 3%.Похоже, этот процессор стал моим узким местом.Как мне сократить загрузку процессора?

Это было полезно?

Решение

Используйте профилировщик (мне нравится VisualVM ), определите узкое место и исправьте его!

Другие советы

Если у вас есть непрерывный цикл while, дайте вашей программе несколько время сна между итерациями. Сама по себе загрузка веб-страниц не должна приводить к такому интенсивному использованию ресурсов, однако, вы можете захотеть заглянуть в профилировщик, чтобы выяснить, в чем заключается ваше узкое место. Возможно, размещение кода здесь позволит нам немного помочь вам.

Одна очень простая вещь, которую вы можете сделать, чтобы выявить проблему, - просто взять несколько следов стека. ctrl- / Ctrl-Break / jstack / JConsole / VisualVM. Если программа катастрофически тратит много времени там, где есть проблема с производительностью (вполне вероятно), то вы должны легко увидеть проблему.

Если ваша загрузка ЦП в течение длительного периода времени близка к 100%, то, скорее всего, в вашем коде есть ошибка (бесконечный цикл или что-то в этом роде). Попробуйте профилировать свое приложение, чтобы увидеть, что происходит. Начните с печати текущего времени из разных точек вашего кода. Если вы все еще не можете это выяснить, потребуется профилировщик.

Возможно, вы проводите опрос данных слишком быстро...

Я бы попытался изменить код на уведомление, управляемое событиями.

С уважением.

Когда вы читаете, считываете ли вы символ / байт за раз?Это немного загрузит операционную систему.

Используйте BufferedReader и / или попробуйте прочитать, используя либо read(char[]...) , либо readLine() в зависимости от того, что вы читаете.

Вы случайно не анализируете HTML, используя встроенный в Java XML DOM материал? Исходя из прошлого опыта, это может привести к довольно здоровенному использованию процессора (и, честно говоря, это самая медленная реализация, которую я когда-либо видел). Если это так, вы можете использовать стороннюю библиотеку для анализа XML ( JDOM , для экземпляр).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top