Андрей Паньгин - Память Java процесса по полочкам

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 มิ.ย. 2019
  • Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург + трансляция).
    Подробности и билеты: jrg.su/Ypf1HW
    - -
    . . . . Феерическая расстановка точек над тем, почему Джава жрёт память. Всё, что вы хотели знать, всё, о чём догадывались, и то, что будет сниться вам в кошмарах :) Самое главное - разобраны инструменты, с помощью которых можно увидеть и пощупать потребление памяти.
    Означает ли JVM-параметр -Xmx4G, что процесс займёт не более 4-х гигабайт в системе? Разумеется, нет. На что ещё уйдёт виртуальная память и, главное, сколько? Вопрос становится особенно актуальным при разделении ресурсов между несколькими процессами или при запуске Java в контейнере.
    Помимо самой виртуальной машины жадными до памяти оказываются библиотеки и пользовательские приложения. Но если утечку Java-объектов обычно легко выявить из хип-дампа, то утечка нативной памяти может поставить в тупик.
    В докладе мы разберём, на какие структуры виртуальной машины расходуется оперативная память, как мониторить и регулировать её потребление. Изучим различные стратегии управления виртуальной памятью, выясним, что изменилось в новых версиях JDK. Рассмотрим реальные примеры утечек нативной памяти и познакомимся с инструментами для анализа аллокаций.
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 12

  • @razmus89dragovich20
    @razmus89dragovich20 4 ปีที่แล้ว +18

    супер информативно!

  • @whereispie
    @whereispie 3 ปีที่แล้ว +7

    Огонь тема, спасибо

  • @Recentqawon
    @Recentqawon 3 ปีที่แล้ว +2

    А где можно найти розписаную иерархию памяти, кроме документации?

  • @JochenRU
    @JochenRU 5 ปีที่แล้ว +7

    На работе писал прогу из 2 частей: логгер gc и gccapacity для 7-8 Java-процессов нашего софта, и анализатор этих логов (ищет пики, выводит лог событий). До сих пор не могу понять, почему GC срабатывает при юзадже от 40 до 60 процентов от хмх, а не 80 хотя бы. Хз что делать с этим анализом правда

    • @java_couch
      @java_couch ปีที่แล้ว

      есть флажок, который описывает от скольки запускать гц, никогда не будет 100% заполнения хипа по причине называемой опережения старения, когда скорость выделения памяти такова, что объекты не успевают умирать и изза заполнености молодого поколения перемещаются сразу old gen

  • @pvlnsk1
    @pvlnsk1 4 หลายเดือนก่อน

    Про xms неточность в 10:30. Всё же xms это начальный и минимальный размер хипа. Поэтому когда xms равен xmx размер хипа не изменяется.

    • @learning867
      @learning867 หลายเดือนก่อน

      Он сказал про это ведь, что xms = xmx не означает, что хип не может стать меньше... Он может. Дальше не смотрел что ли

    • @pvlnsk1
      @pvlnsk1 หลายเดือนก่อน

      ​@@learning867я про его неточность и написал. xms это начальный и минимальный размер кучи, меньше чем значение xms хип быть не может.

  • @mtuliakova
    @mtuliakova 4 ปีที่แล้ว +11

    Спасибо за лекцию!
    Мало ли у кого-то будет подобная проблема
    :
    Пробовала запустить профилирование памяти с ключом -e malloc -> вылетало с ошибкой "perf_event_open failed: No such file or directory". В итоге отказалось что яро старое и на нем просто нет perf_events. (ядро 2.6.32-754.23.1.el6.x86_64
    )