Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457

Как делать оптимизацию коллектора?

16.11.2006, 08:26. Показов 2251. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мое серверное приложение работает с сетью и базой данных. Поэтому паузы естественны. Но как-то случайно заметил, что есть и паузы, вызванные работой gc. Рискнул отказаться от gc, используемого по умолчанию и включил конкурентный gc, который минимизирует паузы. Эффект превзошел все ожидания. Однако, возможно я нашел не лучшее решение. Только вот хлопотное это дело - экспериментировать на "ходячем" пациенте. Его надо перестартовывать, потом наблюдать. Научное исследование. А как вы тюнинг gc делаете?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2006, 08:26
Ответы с готовыми решениями:

Как определить ток коллектора p-n-p транзистора?
Определить ток коллектора p-n-p транзистора при U_AB=0 и U_NB=\dfrac{{K}{T}}{q}, если ток насыщения эмиттер I_AB=5\cdot{10^-7} Ампер, а...

Как улучшить оптимизацию
Здравствуйте, подскажите, пожалуйста по оптимизации моего сайта http://rabota-est.com.ua , вроде уже и нормально оптимизировал и денег...

Как отключить оптимизацию
Граждане, как в билдере отключить оптимизацию кода. Ну чтоб объектный файл генерировался без внутренней оптимизации.

9
1 / 1 / 1
Регистрация: 05.01.2010
Сообщений: 235
16.11.2006, 18:23
Может немного и не в тему. Но в абсолютно всех случаях, когда мне хотелось оптимизировать коллектор проблему удавалось решить за счет оптимизации собственной программы.
0
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
16.11.2006, 19:28  [ТС]
Если под оптимизацией программы понимать ликвидацию утечек памяти, то, действительно, надо с этого начинать. Если в программе накапливаются неосвобождаемые обьекты, то никакой gc не спасет. Однако в любой программе есть временные обьекты с разным жизненным циклом. Что тут можно оптимизировать?
Поменять gc все же проще. Например, у меня gc, который был по умолчанию, убирал молодые обьекты за 0,008 сек, но несколько раз в день включал FullGC длительностью 30 сек. А конкурентный включается на 0,02 -0,03 сек и таких огромных пауз не делает.
0
1 / 1 / 1
Регистрация: 05.01.2010
Сообщений: 235
16.11.2006, 21:02
mselez (16.11.2006)


Однако в любой программе есть временные обьекты с разным жизненным циклом. Что тут можно оптимизировать?
Программы я не видел, поэтому утверждать ничего не могу. Но разве нельзя переделать временные объекты в постоянные? Т.е. создавать некоторое количество объектов заранее и использовать их по мере необходимости (если программа работает постоянно, думаю есть возможность собрать статистику, сколько экземпляров временных объектов требуется для поддержки работы). Создавать же новые объекты - только в крайних случаях, когда кэш иссякает. Правда если временные объекты не допускают изменения состояния (объекты-значения или как там это называется), то действительно делать нечего...

И еще - 30 секунд пару раз в сутки - это разве много? Или идет речь о системе чуть ли не реального времени? Подпихивать сборщик эдак где-то часа в 2 ночи...

Ну и лирическое отступление: а пользователям задержки доставляют неудобство? Помню случай, довольно давно разрабатывал базу данных и один отчет (самый главный! ) готовился около 20 минут. Через пару лет работы программы я ужаснулся сему факту и провел коренную оптимизацию (потратил неделю), отчет стал готовится за 30 секунд. А они как включали расчет и уходили на обед, так и делают по сей день (когда приходят через час - все готово)...
0
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
16.11.2006, 22:05  [ТС]
Согласен с вашими рассуждениями, но в моем случае 30 сек - это заметно. А относительно идеи не плодить без нужды обьекты и использовать пулы - я тоже так рассуждал и делал. Но это противоречит концепции java. Создатели gc настоятельно этого не рекомендуют.
Кроме того, полностью избежать создания временных обьектов трудно, если приложение общается с внешним миром - по крайней мере новые стринги создаются. И эти новые обьекты, если на них ссылка хотя бы одна и пусть даже кратковременно была, уже имеют шанс быть не убраны во время "быстрой" уборки. Часть новых обьектов может накапливаться в ожидании "полной" уборки. Поэтому правильнее подобрать коллектор с нужной стратегией, чем программировать на java в стиле C, экономя каждый байт и каждый обьект.
0
1 / 1 / 1
Регистрация: 05.01.2010
Сообщений: 235
17.11.2006, 14:31
mselez (16.11.2006)


... Но это противоречит концепции java. Создатели gc настоятельно этого не рекомендуют.

Кроме того, полностью избежать создания временных обьектов трудно...
Это конечно да. Все в конце концов упирается в конкретную реализацию. Просто всегда подозрительно относился к прямому влиянию на коллектор, как к чему-то типа фола последней надежды... Но с другой стороны и круглосуточно работающих сервеных приложений не писал.
0
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
21.11.2006, 03:42
ННП



mselez, ты все правильно сделал. Для этого его -- concurrent gc -- и заимплементили. Из твоего топика не понятно, но я на всякий случай скажу, что существуют два concurrent gc: один -- для эдема, второй -- для остальной кучи. Так вот включаются они поотдельности каждый. Рекомендую включать их оба, так как не могу придумать сценария, когда был бы нужен один, а второй -- нет.



А про сбор статистики по количесву объектов каждого типа, и использование затем пулов. Смысла нету. Можно так делать, тока JVM все равно быстрее обработает содание и удаление в большинстве случаев. Я говорю о программе, в которой учитывались при программировании особености GC. А по-другому писать смысла нету =)
0
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
21.11.2006, 20:00  [ТС]
Я использую опцию -XX:+UseConcMarkSweepGC. Судя по логу gc он вроде чистит все - сначала мелкими порциями "свежатину" удаляет, а как только память подбирается к максимуму, делает полную уборку. Используемая память резко (иногда в два три шага) падает. Но главное, паузы меньше секунды.
0
1 / 1 / 1
Регистрация: 05.01.2010
Сообщений: 235
22.11.2006, 14:21
Danissimo (21.11.2006)
ННП

А про сбор статистики по количесву объектов каждого типа, и использование затем пулов. Смысла нету. Можно так делать, тока JVM все равно быстрее обработает содание и удаление в большинстве случаев. Я говорю о программе, в которой учитывались при программировании особености GC. А по-другому писать смысла нету =)
Чисто не там где убирают, а где не сорят
0
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
22.11.2006, 18:58  [ТС]
Чисто не там где убирают, а где не сорят

Я поставил NetBeans 5.5 , потому что к нему есть дополнительный модуль для профайлинга. Довольно удобная штука - можно в реальном времени понаблюдать за процессами, обьектами и уборкой мусора. Хорошая документация и примеры. Рекомендую.
Как я и ожидал, самый интенсивный мусор - это обьекты char[]. Можно также проследить, кто "сорит". У меня это класс StringBuffer. Явной "утечки" нет. Если обьект в момент прихода коллектора имел ссылку, то его возраст увеличивается на 1 . Поскольку момент прихода коллектора непредсказуем, то явно управлять уборкой обьектов сложно - все равно что-то будет убрано сразу, а что-то потом, т.е. будет накапливаться.
Думаю, что не "сорить" в java - это утопия.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2006, 18:58
Помогаю со студенческими работами здесь

как виляет код на оптимизацию
как влияет кол-во кода на его оптимизацию, в частности начиная от всех символов и заканчивая оператароми

Как бы вы разбили бюджет на оптимизацию?
Собственно вопрос в теме: есть 3000/мес - куда вы бы их вложили в % соотношении (сапа, статьи, может еще что-то).

Как отключить JIT оптимизацию?
При отладке не могу задать следующий выполняемый оператор Модуль указан с оптимизацией Хотя в настройках я ее отключил ...

Как улучшить оптимизацию сайта?
День добрый всем посетившим мой скромный топик. Я хотел бы попросить мастеров оптимизации оценить оптимизаци моего портала....

Как js-gui повлияет на поисковую оптимизацию?
Еще раз всем салют. Вопрос такой.. Допустим я хочу сделать на сайте интерфейс полностью на JQuery (ajax). То есть весь сайт - это 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru