Parus16.ru

Парус №16
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Не удалось создать файл дампа из-за ошибки; »: как исправить

«Не удалось создать файл дампа из-за ошибки…»: как исправить

Во время блужданий в компоненте «Просмотр событий» можно наткнуться на ошибку с кодом 161 и сообщением «Не удалось создать файл дампа из-за ошибки при создании дампа». Как правило, пользователи заглядывают в этот компонент системы после постоянных появлений синего экрана смерти и неудачных попыток получить доступ к дампу памяти. Данная проблема может возникать на всех версиях Windows, но чаще всего на нее жалуются именно пользователи Windows 10.

Что вызывает появление этой ошибки?

Как правило, выделяют всего три причины для проявления этой ошибки:

  • приложение для очистки диска удаляет создаваемый дамп-файл;
  • поврежденные системные файлы Windows;
  • устаревшая версия BIOS или проблемы с его настройками.

Ознакомившись с возможными причинами, пора приниматься за устранение ошибки «Не удалось создать файл дампа из-за ошибки…».

Метод №1 Удаление сторонней программы для очистки

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

Мы рекомендуем вам избавиться от такой программы. Удалить то или иное ПО можно в таких компонентах системы, как «Приложения и возможности» и «Программы и компоненты». Как только избавитесь от программы, дождитесь BSoD и проверьте «Просмотр событий» на наличие «Не удалось создать файл дампа из-за ошибки…».

Метод №2 Использование DISM и SFC

Возможно, ошибка при создании дампа памяти возникла из-за поврежденных системных файлов, функционал которых применяется в данном процессе. Это довольно просто проверить, запустив в работу системные утилиты DISM и SFC. Эти утилиты просканируют систему на наличие поврежденных файлов и попытаются провести восстановление, если это возможно.

Для запуска DISM и SFC вам потребуется сделать следующее:

  1. нажмите Windows+R;
  2. пропишите в пустую строчку «cmd» и нажмите комбинацию Ctrl+Shift+Enter;
  3. напишите команду «sfc /scannow» и нажмите Enter;
  4. дождитесь окончания работы SFC и перезагрузите компьютер;
  5. такими же шагами снова откройте Командную строку;
  6. введите команду «DISM /Online /Cleanup-Image /RestoreHealth» и нажмите Enter;
  7. подождите окончания процесса и перезагрузите свой ПК.

После очередного появления BSoD откройте компонент «Просмотр событий» и проверьте, исчезло ли сообщение «Не удалось создать файл дампа из-за ошибки при создании дампа».

Метод №3 Обновление BIOS

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

Метод №4 Сброс компьютера к исходному состоянию

Если никакие из вышеуказанных методов не помогли вам в решении ошибки «Не удалось создать файл дампа из-за ошибки при создании дампа», то мы рекомендуем выполнить возврат компьютера к исходному состоянию. Да, метод довольно радикальный, но он наверняка избавит вас как от ошибки при создании дампа, так и от BSoD.

Чтобы вернуть компьютер к исходному состоянию, вам нужно сделать следующее:

  1. нажмите правой кнопкой мыши на Пуск;
  2. выберите пункт «Параметры»;
  3. пройдите в раздел «Обновление и безопасность»;
  4. перейдите во вкладку «Вернуть компьютер в исходное состояние»;
  5. выполняйте действия согласно с инструкциями на экране.

Вот и все. Ваша операционная система вернулась в свое изначальное, более стабильное состояние.

Читайте так же:
Блок питания 1000w zalman zm1000 gvm

Получение и анализ содержимого памяти в ОС Linux

В данной статей мы рассмотрим метод удаленного получения образа памяти при помощи LiME в системе на базе CentOS 6.5 x64.

image

Автор: Дэн Кэбен (Dan Caban)

Раньше образ памяти в системах на базе ОС Linux можно было получить напрямую (при помощи утилиты dd) из файлов псевдоустройств, таких как /dev/mem и /dev/kmem. В последних версиях ядра доступ к этим устройствам стал ограничен и/или полностью исключен. Чтобы исследователи и системные администраторы могли получить неограниченный доступ, были разработаны загружаемые модули, которые, к примеру, доступны в проектах fmem и LiME (Linux Memory Extractor).

В данной статей мы рассмотрим метод удаленного получения образа памяти при помощи LiME в системе на базе CentOS 6.5 x64.

LiME – загружаемый модуль ядра (Loadable Kernel Module, LKM). Загружаемые модули обычно разрабатываются с целью расширения функционала ядра. Модуль можно добавить, используя учетную запись с привилегиями суперпользователя. При установке модуля следует быть осторожным, поскольку некорректная его установка несет потенциальные риски для целевой системы. С другой стороны, LiME обладает рядом несомненных преимуществ:

  • Скомпилированный модуль довольно небольшого размера.
  • Процедура установки не требует перезагрузки.
  • Модуль легко добавляется или удаляется.
  • Полученный дамп памяти можно скачать удаленно без записи на локальный диск целевой системы.
  • Дамп памяти совместим с фреймворком Volatility.

Подготовка к работе

Поскольку LiME распространяется в виде исходных текстов, для начала необходимо его скомпилировать. Всю доступную информацию можно легко найти в интернете, но перед этим рекомендую вам поискать скомпилированные версии модуля или скомпилировать и протестировать его на виртуальной машине.

В любом случае для начала необходимо узнать версию ядра на целевой машине.

]$ uname -a
Linux localhost.localdomain 2.6.32-431.5.1.el6.x86_64 #1 SMP
Wed Feb 12 00:41:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Скомпилированные версии LiME-модулей можно взять в Linux Forensics Tools Repository at Cert.org (этот ресурс заслуживает доверия). Там хранятся RPM-репозитарии аналитических утилит для Red Hat Enterprise Linux, CentOS и Fedora.

Чтобы найти скомпилированный модуль для определенной версии ядра и операционной системы зайдите на Cert и найдите «repoview» для целевой операционной системы

Рисунок 1: Раздел с репозитариями для CentOS

Далее зайдите в раздел «applications/forensics tools» и откройте документацию для «lime-kernel-objects».

На момент написания статьи в репозитарии были скомпилированные версии для следующих версий ядер (под ОС CentOS 6 / RHEL 6):

2.6.32-71
2.6.32-71.14.1
2.6.32-71.18.1
2.6.32-71.24.1
2.6.32-71.29.1
2.6.32-71.7.1
2.6.32-131.0.15
2.6.32-220
2.6.32-279
2.6.32-358.0.1
2.6.32-358.11.1
2.6.32-358.14.1
2.6.32-358.18.1
2.6.32-358.2.1
2.6.32-358.23.2
2.6.32-358.6.1
2.6.32-431
2.6.32-431.1.2.0.1
2.6.32-431.3.1

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

Я установил на виртуальной машине CentOS 6.5 x64 с последней версией ядра (2.6.32-431.5.1.el6.x86_64).

]$ yum update
[root@vmtest

После обновления ядра перезагружаем виртуальную машину.

Теперь нам нужны соответствующие заголовки и исходники ядра, а также утилиты для компиляции.

]$ yum install gcc gcc-c++ kernel-headers kernel-source

Теперь мы готовы к загрузке и компиляции модуля LiME!

]# mkdir lime; cd lime
[root@vmtest lime]# wget https://lime-forensics.googlecode.com/files/lime-forensics-1.1-r17.tar.gz
[root@vmtest lime]# tar -xzvf lime-forensics-1.1-r17.tar.gz
[root@vmtest lime]# cd src
[root@vmtest src]# make
….
make -C /lib/modules/2.6.32-431.5.1.el6.x86_64/build M=/root/lime/src modules

[root@vmtest src]# ls lime*.ko
lime-2.6.32-431.5.1.el6.x86_64.ko

Тестовый запуск

После компиляции модуля загрузим его на виртуальной машине и выгрузим память в локальный файл. Настройки модуля выглядят следующим образом:

]# insmod lime-2.6.32-431.5.1.el6.x86_64.ko "path=/root/mem.img format=lime"

Образ памяти будет выгружен в файл /root/mem.img, а формат «lime» совместим с фреймворком volatility.

Читайте так же:
Блок питания finepower dnp 550

Я проверил параметры созданного образа (на соответствие размера и объема памяти, выделенного под виртуальную машину, а также на корректность содержимого образа).

]# ls -lah /root/mem.img
-r—r—r—. 1 root root 1.0G Mar 9 08:11 /root/mem.img
[root@vmtest

]# strings /root/mem.img | head -n 3
EMiL
root (hd0,0)
kernel /vmlinuz-2.6.32-431.5.1.el6.x86_64 ro root=/dev/mapper/vg_livecd-lv_root rd_NO_LUKS

Удаляем модуль ядра при помощи простой команды:

Получение образа через интернет

После успешных тестов вернемся к нашей первоначальной задаче: захвату памяти на сервере с ОС CentOS и загрузке полученного образа через интернет. Я загрузил модуль на подконтрольный мне сервер, а затем скачал его через протокол HTTP:

LiME позволяет не только записывать образы на локальный диск. Вместо этого мы можем создать TCP-сервис при помощи аргумента path=tcp:4444.

]# insmod lime-2.6.32-431.5.1.el6.x86_64.ko "path=tcp:4444 format=lime"

Если, к примеру, мы находимся внутри клиентской сети или порт 4444 доступен через интернет, при помощи netcat я могу соединиться с сервером и скачать образ памяти на свой компьютер.

]# nc target.server.com 4444 > /home/dan/evidence/evidence.lime.img

Поскольку целевой сервер находится в интернете, на котором установлен фаервол, к процессу получения образа следует подходить более творчески.

Помните, как я загружал модуль на целевой сервер через HTTP (80-й порт)? Это означает, что файервол разрешает исходящие TCP-соединения через этот порт.

Я могу установить сервер netcat, который будет доступен через интернет при помощи конфигурирования файервола так, чтобы трафик с этого порта передавался на мой локальный LAN-адрес. Вы можете сделать то же самое при помощи большинства роутеров и функции проброса портов (port forwarding).

Шаг 1: настраиваем netcat сервер на нашей машине, чтобы он прослушивал 80-й порт.

]# nc –l 80 > /home/dan/evidence/evidence.lime.img

Шаг 2: Запускаем модуль LiME и конфигурируем его на ожидание TCP-соединений на 4444 порту.

]# insmod lime-2.6.32-431.5.1.el6.x86_64.ko "path=tcp:4444 format=lime"

Сейчас на целевом сервере я могу использовать локальное соединение netcat, связанное с удаленным соединением к моему компьютеру через 80-й порт (где 60.70.80.90 – условный адрес моей машины).

Шаг 3: Создаем цепочку для передачи образа памяти на мою машину.

]# nc localhost 4444 | nc 60.70.80.90 80

Теперь, когда образ оказался на моей машине, можно начать его анализ.

Ниже показана наглядная схема процесса передачи образа:

Рисунок 2: Схема передачи образа памяти на удаленный хост

Анализ памяти при помощи Volatility

В Volatility есть множество профилей для парсинга дампов памяти, но эти конфигурации в основном полезны при анализе образов взятых в ОС Windows. Чтобы выполнить анализ дампа взятого из Линукса, мы должны создать новый профиль, в точности соответствующий операционной системе, версии ядра и архитектуре. Вернемся в виртуальной машине для того, чтобы собрать всю необходимую информацию для создания профиля. Нам потребуется:

  • отладочные символы (System.map*)
    • Необходим доступ к тестовой виртуальной машине с той же самой архитектурой, версией ядра и операционной системой.
    • Необходимы исходники volatility и утилиты для компиляции файлов ядра на той же самой архитектуре, версии ядра и операционной системе.

    Для начала создадим папку, в которую будем складировать все необходимые файлы.

    mkdir -p volatility-profile/boot/
    mkdir -p volatility-profile/volatility/tools/linux/

    Теперь скопируем отладочные символы, находящиеся в CentOS в директории /boot/. Необходимо найти файл System.map*, соответствующий версии ядра, которая была запущена во время получения дампа памяти (2.6.32-431.5.1.el6.x86_64).

    ]# cd /boot/
    [root@vmtest boot]# ls -lah System.map*
    -rw-r—r—. 1 root root 2.5M Feb 11 20:07 System.map-2.6.32-431.5.1.el6.x86_64
    -rw-r—r—. 1 root root 2.5M Nov 21 22:40 System.map-2.6.32-431.el6.x86_64

    Копируем соответствующий файл System.map в ранее созданную папку.

    [root@vmtest boot]# cp System.map-2.6.32-431.5.1.el6.x86_64

    /volatility-profile/boot/ Одно из требований при компиляции файлов ядра (vtypes) – наличие библиотеки libdwarf. В других операционных системах ее можно получить при помощи apt-get или yum. В CentOS 6.5 необходимо скомпилировать исходники, взятые из Fedora Project. Остальные пакеты, необходимые для компиляции, должны быть установлены во время компиляции LiME (см. Раздел «Подготовка к работе»).

    [root@vmtest boot]# cd

    ]# mkdir libdwarf
    [root@vmtest libdwarf]# cd libdwarf/
    [root@vmtest libdwarf]# wget http://pkgs.fedoraproject.org/repo/pkgs/libdwarf/libdwarf-20140208.tar.gz
    /4dc74e08a82fa1d3cab6ca6b9610761e/libdwarf-20140208.tar.gz
    [root@vmtest libdwarf]# tar -xzvf libdwarf-20140208.tar.gz
    [root@vmtest dwarf-20140208]# cd dwarf-20140208/
    [root@vmtest dwarf-20140208]#./configure
    [root@vmtest dwarf-20140208]# make
    [root@vmtest dwarfdump]# cd dwarfdump
    [root@vmtest dwarfdump]# make install

    Копируем исходники Volatility и скомпилировать структуры ядра.

    [root@vmtest dwarfdump]# cd

    ]# mkdir volatility
    [root@vmtest

    ]# cd volatility
    [root@vmtest volatility]# cd volatility
    [root@vmtest volatility]# wget https://volatility.googlecode.com/files/volatility-2.3.1.tar.gz
    [root@vmtest volatility]# tar -xzvf volatility-2.3.1.tar.gz
    [root@vmtest volatility]# cd volatility-2.3.1/tools/linux/
    [root@vmtest linux]# make

    После успешной компиляции скопируем получившийся файл (module.dwarf) в папку профиля.

    [root@vmtest linux]# cp module.dwarf

    Запаковываем оба файла в ZIP-архив (согласно требованиям Volatility).

    [root@vmtest linux]# cd

    /volatility-profile/
    [root@vmtest volatility-profile]# zip CentOS-6.5-2.6.32-431.5.1.el6.x86_64.zip
    boot/System.map-2.6.32-431.5.1.el6.x86_64 volatility/tools/linux/module.dwarf
    adding: boot/System.map-2.6.32-431.5.1.el6.x86_64 (deflated 80%)
    adding: volatility/tools/linux/module.dwarf (deflated 90%)

    Полученный архив на своей машине можно было бы скопировать в стандартную папку, предназначенную для хранения профилей, однако чтобы избежать их потери во время обновлений, я создал отдельную директорию и сослался на нее во время запуска volatility.

    Далее видим, что Volatility распознал новую директорию для плагинов.

    dan@investigativelaptop evidence]# vol.py —plugins=/home/dan/.volatility/profiles/ —info | grep -i profile | grep -i linux
    Volatility Foundation Volatility Framework 2.3.1
    LinuxCentOS-6_5-2_6_32-431_5_1_el6_x86_64x64 — A Profile for Linux CentOS-6.5-2.6.32-431.5.1.el6.x86_64 x64

    Запускаем плагины с префиксом linux, которые идут в составе Volatility, для выполнения анализа памяти.

    Что будет, если удалить файлы дампа памяти для системных ошибок?

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

    Хирургическое удаление катаракты — достаточно сложная и ювелирная операция, риск осложнений после которой достаточно высок. К таким осложнениям относится и смещение интраокулярной линзы. Это может быть связано с разрывом задней капсулы, удерживающей линзу в правильном положении. Вам необходимо как можно быстрее обратиться к врачу, чтобы исключить это осложнение или начать лечение ( подшивание хрусталика к капсуле ). Если запустить это, то хрусталик может зарубцеваться, что впоследствии затруднит его удаление.

    Острый аппендицит- это катастрофа в брюшной полости, требующая оперативного лечения по жизненным показаниям, независимо от срока беременности. Да и не только от беременности. Пациенту проводится операция по жизненным показаниям, так опасность развития перитонита от разрыва этого маленького рудимента кишечника настолько велика, что отметаются все противопоказания и речь идет о жизни пациента.

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

    Плоскогубцами с узкими браншами можно вырвать передний болтающийся зуб. В данном случае плоскогубцы нужны лишь, как средство для быстроты отрыва болтающегося зуба. А, дальние зубы плоскогубцами уже не вырвешь, если и способен дикую боль преодолевать. Концы пассатижь не приспособлены к захвату коронки зуба, в отличии от стоматологических щипцов. Стоматологических щипцов потому и много, что каждое рассчитано для каждого зуба, что обеспечивает надёжный захват коронки. Да и стоматолог зуб не дёргает, а выкручивает из лунки. А, это означает, что удалять зуб, ещё надо уметь. В лучшем случае может получиться сломать коронку зуба, после чего он перестаёт болеть. Но корни зуба останутся на потом и будут ждать своей очереди.

    Если долго ходить с незапломбированным зубом, то ткани зуба начнут постепенно размягчаться, и впоследствии врач уже может отказаться ставить на эти размягченные зубы пломбу или даже коронку — ведь им не за что будет держаться.

    При этом неприятных последствий в целом для организма, скорее всего, не будет, но зубик пациент потеряет в итоге, пусть и не сразу, а через год-другой.

    Кстати, есть полость большая, то очень велика вероятность и отлома зуба — куснешь что-то твердое, а зуб пополам. Восстанавливать будет очень сложно, а может и невозможно.

    Родинки удаляют криодеструкцией, электрокоагуляцией, хирургическим иссечением или лазером. Мне удаляли криодеструкцией. Каким способом удалять конкретную родинку и удалять ли вообще решает врач. Хотя нет ограничений по возрасту, врачи рекомендуют удалять родинки на теле ребенка только при наличии повышенной серьезности, для красоты, этого делать явно не стоит. Это связано с риском образования плохо заживающих рубцов на месте удаления новообразований. Основными признаками того, что родинку надо удалить, являются кровоточивость, травма родинки, зуд или ее интенсивный рост. Но помните, что любое удаление проходит только с разрешения врача и только под его присмотром. Врачи редко назначают удаление родинки детям, чаще назначают лечение.

    Русские Блоги

    В этой статье мы покажем различные способы захвата дампа кучи в Java.

    Дамп кучи — это снимок всех объектов в памяти в определенный момент в JVM. Они очень полезны для устранения утечек памяти и оптимизации использования памяти в приложениях Java.

    Дампы кучи обычно хранятся в файлах hprof двоичного формата. Мы можем использовать такие инструменты, как jhat или JVisualVM, чтобы открывать и анализировать эти файлы. Кроме того, пользователи Eclipse очень часто используют MAT.

    В следующих разделах мы представим несколько инструментов и методов для создания дампов кучи и покажем основные различия между ними.

    2.JDK Tools

    JDK поставляется с множеством инструментов для захвата дампов кучи разными способами. Все эти инструменты находятся в папке bin в домашнем каталоге JDK. Следовательно, пока этот каталог включен в системный путь, мы можем запускать их из командной строки.

    Поэтому мы продемонстрируем, как использовать эти инструменты для захвата дампов кучи.

    В следующем разделе мы продемонстрируем, как использовать эти инструменты для захвата дампов кучи.

    2.1 jmap

    jmap — это инструмент для вывода статистики о памяти в запущенной JVM. Мы можем использовать его для локальных или удаленных процессов. Параметры следующие:

    Помимо этой опции, мы также должны указать несколько параметров:

    • live: если он установлен, он будет печатать только объекты с активными ссылками и отбрасывать те объекты, которые готовы к сборке мусора. Этот параметр не обязателен
    • format-b: указывает, что файл дампа будет в двоичном формате. Если не установлен, результат тот же
    • file: файл, в который будет записан дамп
    • pid: идентификатор процесса Java

    Помните, что мы можем легко получить pid процесса Java с помощью команды jps.

    Имейте в виду, что jmap был представлен в качестве экспериментального инструмента в JDK и не поддерживается. Поэтому в некоторых случаях лучше перейти на другие инструменты.

    2.2 jcmd

    jcmd — это очень полный инструмент, который работает, отправляя запросы команд в JVM. Мы должны использовать его на том же компьютере, на котором запущен процесс Java.

    Одна из его многочисленных команд — GC.heap_dump. Нам нужно только указать pid и путь к выходному файлу процесса, а затем мы можем использовать его для получения дампа кучи:

    Как и jmap, результирующий дамп имеет двоичный формат.

    2.3 JVisualVM

    JVisualVM — это инструмент с графическим пользовательским интерфейсом, который позволяет нам отслеживать, устранять неполадки и анализировать приложения Java. Графический интерфейс простой, но очень интуитивно понятный и легкий в использовании.

    Один из множества вариантов позволяет нам записывать дампы кучи. Если мы щелкнем правой кнопкой мыши по процессу Java и выберем опцию «Дамп кучи», инструмент создаст дамп кучи и откроет его на новой вкладке:

    img

    3. Автоматически записывать дамп кучи

    Все инструменты, которые мы показали в предыдущих разделах, предназначены для ручного сбора дампов кучи в определенное время. В некоторых случаях мы хотим получить дамп кучи при возникновении ошибки java.lang.OutOfMemoryError, чтобы помочь нам исследовать ошибку.

    В этих случаях Java предоставляет параметр командной строки HeapDumpOnOutOfMemoryError, который создает дамп кучи при возникновении ошибки java.lang.OutOfMemoryError:

    По умолчанию он сохраняет дамп в файле java_pid.hprof, который является каталогом, в котором запускается приложение. Если мы хотим указать другой файл или каталог, мы можем установить его в опции HeapDumpPath:

    При использовании этой опции, когда приложению не хватает памяти, мы сможем увидеть в файле создания, содержащем дамп кучи:

    В приведенном выше примере он записан в файл java_pid12587.hprof.

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

    Наконец, вы также можете указать этот параметр во время выполнения с помощью MBean-компонента диагностики точки доступа. Для этого мы можем использовать JConsole иHeapDumpOnOutOfMemoryError Для виртуальной машины установлено значение true:

    img

    Последний метод, описанный в этой статье, — использование JMX. Мы будем использовать HotSpotDiagnostic MBean, кратко представленный в предыдущем разделе. Этот MBean предоставляет метод дампа кучи, который принимает 2 параметра:

    outputFile: путь к выгружаемому файлу. Файл должен иметь расширение hprof.
    live: если установлено значение true, будут сбрасываться только живые объекты в памяти, как мы видели в jmap ранее.
    В следующем разделе мы покажем 2 различных способа вызова этого метода для захвата дампа кучи.

    4.1 JConsole

    Самый простой способ использовать HotSpotDiagnostic MBean — это использовать JMX-клиент (например, JConsole).

    Если мы откроем JConsole и подключимся к запущенному процессу Java, мы сможем перейти на вкладку MBeans и найти «HotSpotDiagnostic» в com.sun.management. В действии мы можем найти представленный ранее метод dumpHeap:

    img

    4.2 Programmatic Way

    Другой способ использования MBean HotSpotDiagnostic — программный вызов из кода Java.

    Для этого нам сначала нужно получить экземпляр MBeanServer, чтобы получить MBean, зарегистрированный в приложении. После этого нам нужно получить только один *HotSpotDiagnosticMXBean* Создайте экземпляр и вызовите его метод dumpHeap.

    Обратите внимание, что файлы hprof не могут быть перезаписаны. Следовательно, мы должны учитывать это при создании приложений, печатающих дампы кучи. Если мы этого не сделаем, мы получим исключение:

    5. Резюме

    В этом руководстве мы показали различные способы захвата дампов кучи в Java.

    Как правило, мы должны помнить, что всегда следует использовать параметр HeapDumpOnOutOfOfSOnOfOfOfSOnErrorError при запуске приложений Java. Для других целей, если мы помним, что jmap не поддерживается, можно использовать любой другой инструмент.

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