| 
 | 
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Всем привет! Подскажите пожалуйста почему сборка мусора может происходить чаще чем я ожидаю? Например я задал максимальный размер памяти для приложения 28 ГБ -Xmx28g В моём понимании (оно может отличаться от правильного :) ) сборка должна происходить когда размер используемой памяти будет приближаться к 28 ГБ, а через Jconsole я вижу что сборка идёт чаще см. скриншот. Почему сборщик мусора так частит окоянный ? :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 13:01 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Медитировать над различием между Minor и Major GC. У Вас full garbage collector запускался только 1 (один) раз. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 13:50 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  нет, извеняюсь, 14 раз запускался В любом случае: нужная полная настройка JVM нужен паксимально детальный лог GC из него скорее всего и будет понятно, почему сборка мусора запускалась Как вариант: сборка мусора запускается из кода приложения ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 13:52 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsevнет, извиняюсь, 14 раз запускался В любом случае: нужная полная настройка JVM нужен максимально детальный лог GC из него скорее всего и будет понятно, почему сборка мусора запускалась Как вариант: сборка мусора запускается из кода приложения Чтобы получить лог GC нужно JVM запускать с какими-то параметрами? Про сборку из приложения (приложение это Tomcat) хорошая идея, спасибо за подсказку. Я проверю. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 13:55 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Указание максимального размера не означает же, что будет взята вся память сразу по максимуму.  Если указать минимальный размер равный максимальному (что как раз и советуют для серверных приложений), картина такая же? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 14:06 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Mandarin нужно JVM запускать с какими-то параметрами? Да, разумеется https://docs.oracle.com/javacomponents/jrockit-hotspot/migration-guide/logging.htm#JRHMG125 google: https://confluence.atlassian.com/confkb/how-to-enable-garbage-collection-gc-logging-300813751.html https://dzone.com/articles/enabling-and-analysing-the-garbage-collection-log etc.... MandarinПро сборку из приложения (приложение это Tomcat) хорошая идея, спасибо за подсказку. Я проверю. Плохая идея выделять сверх много памяти. Т.к. при full GC все стоит "колом". Бизнес задачь, которые могут выдержать несколько секунд стояния __полным__ колом - я не знаю. При "обычных" GC выбор между "собирать мурок редко но колом стоять долго" vs "собирать мусор чаще, зато стоять колом будем меньше" При таких объемах памяти нужно с какими-то более продвинутыми GC эксперементировать. IMHO Не понятно, за какой период времени статистика. Т.к. на Вашем графике явно Minor, а не Full GC (пиков явно больше 14). Если minor GC запускается раз в 30 секунд - 1 мин. это крайне хороший показатель. Я бы успокоился и ничего не трогал. MandarinПро сборку из приложения -XX:+DisableExplicitGC. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 14:06 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Из графика видно: Под кучу занято пока не 28, а только 20 гб; По дефолту -XX:MinHeapFreeRatio=40, то есть следующее увеличение кучи произойдет, когда после сборки будет занято более 12гб (60%), на картинке видно, что пока после сборки остается занятым 9гб; аномалии: По идее, minor сборка должна происходить на 9+20*1/3 ~ 15 гб, а тут почему-то раньше. Искать в коде вызов GC; Подозрительно много занято под oldgen. Если это рядовые web-приложения на Tomcat-е, неплохо бы поискать утечки ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 14:31 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev, Понятно, спасибо за подсказки. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 14:31 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Mandarin, есть желание покататься на 12-той модели жигулей? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 06.05.2019, 15:18 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Mandarin, Где-то я читал, что GC с версии джавы 8 запускается когда сам посчитает нужным, а не когда его попросят. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.05.2019, 00:22 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Жаль. Надо было погонять этот Шенандох. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.05.2019, 00:49 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Мозговой_слизеньMandarin, Где-то я читал, что GC с версии джавы 8 запускается когда сам посчитает нужным, а не когда его попросят. Ошибаетесь. На JDK8 System.gc() запускает полную сборку в _большинстве_ случаев. Но в целом глупо ждать от сборщика мусора соответствия своим фантазиям. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 13.05.2019, 06:08 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Alexey TominМозговой_слизеньMandarin, Где-то я читал, что GC с версии джавы 8 запускается когда сам посчитает нужным, а не когда его попросят. Ошибаетесь. На JDK8 System.gc() запускает полную сборку в _большинстве_ случаев. Но в целом глупо ждать от сборщика мусора соответствия своим фантазиям. источник знания? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 03:42 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  впрочем, пилите, Шура, пилите. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 03:46 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Мозговой_слизеньAlexey TominОшибаетесь. На JDK8 System.gc() запускает полную сборку в _большинстве_ случаев. Но в целом глупо ждать от сборщика мусора соответствия своим фантазиям. источник знания? Знаний чего? Что gc() работает? Несколько лет в мою зону ответственности входит поиск проблем с памятью приложения на JDK8. Так что и из кода вызов смотрел, и сам в jconsole и т.п. тыкал - собирается мусор. Особенно если тыкать с умом (например после окончания работы алгоритмов, которых памяти нахватали временно). Или того, что это не обязательство а везение? Ну так это документация- сборка мусора может запутиться сама, или НЕ запуститься при вызова gc(). Никаких гарантий. Плюс разные сборщики мусора работают по-разному. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 07:24 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Alexey TominМозговой_слизеньпропущено... источник знания? Знаний чего? Что gc() работает? Несколько лет в мою зону ответственности входит поиск проблем с памятью приложения на JDK8. Так что и из кода вызов смотрел, и сам в jconsole и т.п. тыкал - собирается мусор. Особенно если тыкать с умом (например после окончания работы алгоритмов, которых памяти нахватали временно). Или того, что это не обязательство а везение ? Ну так это документация- сборка мусора может запутиться сама, или НЕ запуститься при вызова gc(). Никаких гарантий . Плюс разные сборщики мусора работают по-разному. Ну и как это противоречит моему утверждению, что GC запускается когда сам сочтет нужным? Я вот тут хотел цитатку привести из документации по GC, да передумал. Вижу вы и без меня умный. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 07:57 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  наверное тогда, когда наступят УСЛОВИЯ для его запуска. Другое дело, что эти условия для разных GC могут быть разными Про ручной запуск вызовом System.gc, в документации все нормально написано. Где-то я читал, что GC с версии джавы 8 запускается когда сам посчитает нужным, а не когда его попросят. я так понимаю, нужно читать так: "Сидел с бабками на завалинке, одна бабка сказала ....[далее по тексту]" ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 10:34 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Alexey Tominили НЕ запуститься при вызова gc(). Никаких гарантий. Что значит "никакой гарантии" ? Есть ключи командной строки которые управляют данным поведением. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 10:38 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Почему никто до сих пор не попросил у мандарина его командную строку? Почему никому не интересно увидеть вкладку плагина Visual GC ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 10:41 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid KudryavtsevAlexey Tominили НЕ запуститься при вызова gc(). Никаких гарантий. Что значит "никакой гарантии" ? Есть ключи командной строки которые управляют данным поведением. Ключи? Знаю только XX:+DisableExplicitGC который делаеть System.gc() пустышкой. А что ещё? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 11:22 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А этого мало? ))) Просто мне кажется, что по ходу дискуссии идея "что в зависимости от настроек и используемого GC, System.GC() МОЖЕТ игнорироваться" трансформировалась в "код System.GC() выглядит примерно так": Код: sql 1. 2. 3. 4. 5. А, IMHO & AFAIK, это совсем не так. Нет там никакого random(). Разумеется осмысленного использования Systen.GC() в продакшен коде - исчезающе мало. Но в __редких__ случаях, он вполне себе используется. Почему никто до сих пор не попросил у мандарина его командную строку? Почему никому не интересно увидеть вкладку плагина Visual GC ? А зачем? Без логов GC все равно смысла мало, ссылку на включение логов автору я вроде кинул. Автор исчез. А в логах и так причина вызова GC должна английским по экрану быть написана. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 13:57 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А ну тогда топик можно закрыть за остуствием фактов. Кстати всегда удивляла способность программистов к телепатии. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 14:16 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid KudryavtsevА этого мало? ))) Просто мне кажется, что по ходу дискуссии идея "что в зависимости от настроек и используемого GC, System.GC() МОЖЕТ игнорироваться" трансформировалась в "код System.GC() выглядит примерно так": Код: sql 1. 2. 3. 4. 5. А, IMHO & AFAIK, это совсем не так. Нет там никакого random(). Разумеется осмысленного использования Systen.GC() в продакшен коде - исчезающе мало. Но в __редких__ случаях, он вполне себе используется. Почему никто до сих пор не попросил у мандарина его командную строку? Почему никому не интересно увидеть вкладку плагина Visual GC ? А зачем? Без логов GC все равно смысла мало, ссылку на включение логов автору я вроде кинул. Автор исчез. А в логах и так причина вызова GC должна английским по экрану быть написана. Как приятно наблюдать кипение мозгов. Вот ведь когда не знаешь вопроса какой велосипед можно изобрести. Пятиколесный аж. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 15:40 | 
  
  
  
   | 
||
| 
 
Сборка мусора 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Мозговой_слизень..... Как приятно наблюдать кипение мозгов. Вот ведь когда не знаешь вопроса какой велосипед можно изобрести. Пятиколесный аж. +++ Мозговой_слизеньНу и как это противоречит моему утверждению, что GC запускается когда сам сочтет нужным? Я вот тут хотел цитатку привести из документации по GC, да передумал. Вижу вы и без меня умный. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 14.05.2019, 15:42 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=59&msg=39812836&tid=2121312]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    59ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    57ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 14ms | 
| total: | 174ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...