Java грузит процессор - IT Новости
Microclimate.su

IT Новости
490 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java грузит процессор

Проблема: Java загружает CPU на 100% и не отпускает

20.07.2008, 18:30

Один поток загружает CPU на 100%
Никак не пойму, как получается, что если один поток нагружает процессор на 100% (например.

Java, 100% нагрузки CPU
Почему java грузит 90-100% цп системы? Как убрать нагрузку цп?

Смотрю кино — виснет на пару секунд, после чего звук отпускает, но картинка так же застыв висит, потом и ее отпускает
всем доброго времени суток. проблема: комп неделю назад начал виснуть. Смотрю кино — виснет на.

Браузер загружает процессор на 90-100%
Здравствуйте, у меня случилась такая беда. резко начал грузить проц в браузере и не только.. я.

20.07.2008, 23:12221.07.2008, 16:26 [ТС]321.07.2008, 19:56422.07.2008, 21:585

Привет всем.
Ребятки, а кто вам сказал что сборщик мусора убивает проги?
Сборщик мусора освобождает занимаемую память если на нее нету ссылок.

И если обьектов никто в данный момент не использует это не означает что они должны быть уничтожены. Будут объекты уничтожены и соотв. освободится память, когда на них не будет ниодной ссылки.

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

————— Ребята давайте жить дружно! (с) Кот Леопольд.

23.07.2008, 01:09623.07.2008, 13:46 [ТС]7

to vovik64:
То что ты написал по поводу сборщика мусора это и так все понятно. Я конечно ламер но не до такой степени чтобы не понимать что сборщик мусора не освобождает нагрузку на проц. Но загрузка проца проискодит именно в тот момент когда памяти не хватает. По поводу бесконечных циклов: я уже писал что проги отрабатывают успешно по многу раз в сутки. Какие тут могут быть бесконечные циклы? Если бы они были зависание происходило на прогах.

to mishgun:
Проги я посмотрел, разобрал, вроде никакого криминала там нет. У меня тоже было подозрение на них. Классы проверил. Насколько я знаю все классы которые сам пишешь наследуются по умолчанию от Object если даже не указывать явно. Значит метод finalize у них есть. Я прав?
Память забивают даже те страницы на которыя я использую только стандартные классы или даже только стандартные типы (int, boolean).
Пробовал вызывать System.gc() предварительно обнулив ссылки на обьекты, но это не помогло.
Может быть такое что память забивается скомпилированными страницами чтобы потом их снова не компилить? Я спрашиваю потому что при повторном выполнении страницы память не забивается. Да память забивается даже теми страницами на которых вообще ничего нет, просто пустой jsp файл.
Еще я посмотрел лог JRun’a когда проц загрузился на 100% там была зафиксированна ошибка OutOfMemory Error
Если тебя это не сильно затруднит может напишешь настройки своего JRun’a?

to all:
Какие будут соображения, советы?

Java EE приложение загружает процессор на 100%

Имеется сервер приложений Jboss EAP 6.4.
Наше приложение иногда загружает сервер на 100%. Работа пользователей становится невозможной.

Практически всегда это происходит во время синхронизации приложения с 1С через веб сервис.
Складывается впечатление, что приложение съедает ресурсы после получения данных: получаем большой список данных, начинаем записывать его в БД — всё зависает. Но есть нестыковки. Например, иногда данных приходит мало, а проблема всё равно появляется. Иногда наоборот — данных много, но всё работает как часы.

Читать еще:  0x80070005 как исправить windows 10 при восстановлении

Использовали visualvm чтобы изучить состояние сервера. Но практически безрезультатно.
Делаю snapshot, фильтрую по нашему пакету, сортирую по total time — вверху списка обычные методы получения данных из бд, которые обычно отрабатывают сравнительно быстро.
Задумывался о блокировках БД, но пока тоже кажется маловероятным.

Важный момент получение и обработка данных идет в 1 методе, а у процессора 8 ядер. То есть получается 1 поток съедает 8 ядер, что в общем-то выглядит невозможным. Если у кого-то будут идеи, что делать в этой ситуации, было бы очень здорово.. Прилагаю данные из visual vm собранные в момент загрузки ЦП на 100%

1 ответ 1

Такие симптомы могут быть из-за проблем с расходом памяти, который приводит к излишней нагрузке на GC ( Garbage collection ) — память заканчивается, запускается GC и «съедает» 100% CPU . Если при этом не удалось высвободить достаточно много памяти, то вскоре GC запустится снова. Настройте журнализацию запусков GC и мониторьте их. Возможно, что к моменту запуска синхронизации память уже «съедена» другими процессами, и оптимизировать надо их, а не синхронизацию.

Если веб-сервис — SOAP — то там высокие накладные расходы на обработку формата XML , требуется много памяти и CPU : если есть возможность, попробуйте перейти на REST/JSON . Проверьте алгоритмы обработки синхронизации, ищите возможность создавать меньше объектов. Если синхронизация получает данные по изменениям с момента предыдущей синхронизации — попробуйте запускать её чаще, чтобы снизить объём данных, передаваемых единовременно.

Поэкспериментируйте с размером доступной приложению памяти (параметр JVM Xmx ), для промышленного сервера обычно указывают не менее 2-4 Гб. Не торопитесь сразу выделять слишком много памяти, т.к. в таком случае хоть GC, скорее всего, будет запускаться реже, но время его работы может значительно увеличиться — может наступить так называемый stop the world , во время которого приложение становится практически не работоспособным. Смотрите так же память сервера — возможно, что ОЗУ закончилось и начинается сброс её содержимого на диск.

Если версия Java не самая последняя — попробуйте обновить, т.к. алгоритмы работы GC улучшаются от версии к версии. Насколько мне известно в 8-й версии были значительные улучшения. Также существует множество настроек GC .

Советы касательно настроек JVM — это уже крайний случай: в первую очередь разбирайтесь со своим ПО, т.к. в абсолютном большинстве случаев все проблемы с производительностью кроются именно в прикладном ПО, а не в JVM .

Java Platform SE Binary consuming almost 80% of CPU

In our office environment, we have a software which uses java and recently we see that java is consuming high CPU and memory as well. Could you please help me with the root cause and also suggest me to resolve the issue.

Its a Windows 2012 R2 DataCenter 64 bit

Memory: 32 GB

Upon checking in Task manager, I could see below is consuming high CPU

Java(TM) Platform SE Binary

Читать еще:  Как восстановить windows 10 из образа системы

Let me know if you need more information on this.

Question Info

Replies (5) 

On one of the machines to test, fully uninstall Java and then reinstall it but only install the 32 bit version.
This will consume less CPU then the 64 bit version.

See if that works and let me know if you need further help.

3 people were helped by this reply

Did this solve your problem?

Sorry this didn’t help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

22 people were helped by this reply

Did this solve your problem?

Sorry this didn’t help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

10 people were helped by this reply

Did this solve your problem?

Sorry this didn’t help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

I had the same issue, which Google led me here.

In my case, it was the java executable from the monitoring program of the new UPS i had purchased a few days ago at the time.

Just open your task manager (Ctrl+ Shift+ Esc), and check which specific process is doing the overcharge.

Right click on it, then go to file location, or right click and check handles, and then see which of em is being nasty.

Depending opn the process, you might need a java update for your system, in my case it was a standalone program which i couldn’t update to fix the issue, so i stopped the process, and removed it from start.

No more issues since then.

Additionally, if you have issues with RAM loss, after big Windows updates, you can do this:

Hit Win Key + R
Type in “Regedit” and then hit Enter.
Go to ‘HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management’ (you can copy paste this in the regedit search bar, just like win explorer)
Find ‘ClearPageFileAtShutDown’ and change its value to 1

Secondly, go to ‘HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesNdu’ (you can copy paste this in the regedit search bar, just like win explorer)
Find ‘Start’ and set the value to 4.
Restart the computer

This is something i have picked off the web, and it works like a charm for me. (not my own discovery, but i will gladly promote it).

As for system info, w10 Pro x64, i7, 16 GB RAM, paired whit a SSD for Windows drive and the usual peripheral devices.

Good luck, and i hope this helps you out, even a little bit.

Java грузит процессор

Здравствуйте Janius, Вы писали:

J>Привет всем!
J>Я использую Windows 2000 Advansed Server, JRun 3.1, JDK 1.2.2
J>Проблема состоит в том что Java иногда загружает процессор на 100% и не отпускает очень долгое время, даже если остановить JRun.
J>Процесс который загружает процессор javaw.exe
J>Кто нибудь может подсказать что делать. Может быть это какие то настройки?
J>Помогите плз.

Читать еще:  Старая версия java

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

От: Janius
Дата:14.05.02 10:52
Оценка:
От: Maslovsky
Дата:14.05.02 12:20
Оценка:

Здравствуйте Janius, Вы писали:

J>Как думаешь если добавить в конце каждой страницы (я использую jsp) вызов System.gc(), а предварительно все указатели на экземпляры классов обнулить (null) это поможет?

Может помочь, но, как я сказал, совсем не радикально.

J>Как еще можно с этим бороться?
J>Как часто вызывается стандартный Garbage Collector?

Как только память заполняется, то есть в самый ненужный момент

J>Где это можно изменить?

Могу посоветовать сказать и использовать JDK 1.3 вместо 1.2 — в нем добавлнеа поддержка так называемого Java Hot Spot Client, что должно (по заверениям Sun) улучшить производительность. Почитай вот тут: Java HotSpotTM Technology

Можно попробовать поиграться параметрами Java машины. Запусти java.exe -X, увидишь список опций. попробуй поизменять вот эти:

  • -server to select the «server» VM
  • -Xincgc enable incremental garbage collection
  • -Xms set initial Java heap size
  • -Xmx set maximum Java heap size

J>В чем еще может быть причина загрузки процессора?

Поскольку JSP страницы компилируются, может быть в момент их компиляции. Тут сложно что-то сделать, кроме как увиеличить мощьность компьютера. Вообще для серверной Java лично я бы реккомендовал 2-х процессорную машину с 512 Мб памяти.

От: Janius
Дата:16.05.02 08:21
Оценка:
От: Maslovsky
Дата:16.05.02 09:45
Оценка:

Здравствуйте Janius, Вы писали:

J>Я попробовал вызывать System.gc() но не помогло.

Я писал, что совсем не обязательно поможет

J>Может быть такое что память забивается скомпилированными страницами чтобы потом их снова не компилить? Я спрашиваю потому что при повторном выполнении страницы память не забивается.

Страницы компилируются не в память, а на диск.

J>Да память забивается даже теми страницами на которых вообще ничего нет, просто пустой jsp файл.

Неважно, пустой он или нет, все равно страница будет компилться.

J>Еще я посмотрел лог JRun’a когда проц загрузился на 100% там была зафиксированна ошибка OutOfMemory Error

Сколько памяти-то на машине? И какой проц? Я ж писал уже — у явы серьезные системныйе требования.

От: Сан Саныч
Дата:20.06.02 11:14
Оценка:

Здравствуйте Janius, Вы писали:

J>Еще я посмотрел лог JRun’a когда проц загрузился на 100% там была зафиксированна ошибка OutOfMemory Error

я в своей практике сталкивался с такой проблеммой. Это проблема утечки памяти в приложение за счёт создание циклических ссылок и тому подобной фигни. Бороться с этим трудно т.к. GC не удоляет весь мусор. Нужно перед тем как потерять ссылку на объект корректно обнулить всё на что он ссылается.

0 0 голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector