Native image player что это за программа

Java Native Image: проверка возможности использования

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Не так давно Oracle выпустил первый релиз проекта GraalVM (https://www.graalvm.org/). Релизу был сразу присвоен номер 19.0.0, видимо, для того чтобы убедить, что проект зрелый и готов к использованию в серьезных приложениях. Одна из частей этого проекта: Substrate VM — фреймворк, который позволяет превращать Java-приложения в нативные исполняемые файлы (а также нативные библиотеки, которые можно подключать в приложениях, написанных, например, на С/С++). Эта возможность пока объявлена экспериментальной. Также стоит отметить, что у нативных приложений на Java есть некоторые ограничения: необходимо перечислять все используемые ресурсы, чтобы включить их в нативную программу; нужно перечислить все классы, которые будут использоваться с помощью reflection и другие ограничения. Полный список указан тут Native Image Java Limitations. Изучив этот список, в принципе понятно, что ограничения не такие значительные, чтобы нельзя было разработать более сложные приложения, чем хелловорлды. Мною была поставлена такая цель: разработка небольшой программы, которая имеет встроенный web-сервер, использует базу данных (через ORM библиотеку) и компилируется в нативный бинарник, который может запускаться на системах без установленной Java машины.

Экспериментировать я буду на Ubuntu 19.04 (Intel Core i3-6100 CPU @ 3.70GHz × 4).

Установка GraalVM

Установку GraalVM удобно производить с помощью SDKMAN. Команда установки GraalVM:

Выполнится установка OpenJDK GraalVM CE 19.0.0, CE — это Community Edition. Есть еще Enterprise Edition (EE), но эту редакцию нужно скачивать с Oracle Technology Network, ссылка находятся на странице GraalVM Downloads.

После установки GraalVM, уже с помощью менеджера обновления компонентов gu из GraalVM, я установил поддержку компиляции в нативный бинарник —

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

Простое нативное приложение

В качестве системы сборки я использую Maven. Для создания нативных бинарников есть maven plugin:

Еще требуется задать main класс приложения. Это можно сделать как в native-image-maven-plugin, так и традиционным способом, через:

Создадим main класс:

Теперь можно выполнить команду maven для сборки приложения:

Сборка нативного бинарника на моей машине занимает 35 секунд. В результате в каталоге target получается бинарный файл размером 2.5 MB. Программа не требует установленной Java машины и запускается на машинах, где отсутствует Java.

JDBC драйвер Postgres

И так, простое приложение работает, выводит «Hello world». Решения каких-то проблем не потребовалось. Попробую перейти на уровень выше: подключу драйвер JDBC Postgres для запроса данных из базы данных. В Issues на гитхабе GraalVM попадаются баги, связанные с драйвером Postgres, но на релиз-кандидаты GraalVM. Все они отмечены как исправленные.

Подключаю зависимость postgresql:

Пишу код извлечения данных из базы данных (была создана простейшая табличка users):

Собираю нативный бинарник и сразу получаю ошибку сборки:

Дело в том, что сборщик нативного приложения инициализирует все static поля в процессе сборки (если не указано иначе), причем он делает это, исследуя зависимости классов. Мой код не ссылается на org.postgresql.Driver, поэтому сборщик не знает как его лучше инициализировать (при сборке, либо при старте приложения) и предлагает зарегистрировать его для инициализации при сборке. Это можно сделать, добавив его в аргументы maven плагина native-image-maven-plugin, как указано в описании ошибки. После добавления Driver получаю еще такую же ошибку, связанную с org.postgresql.util.SharedTimer. Снова собираю и сталкиваюсь с такой ошибкой сборки:

Error: Class initialization failed: org.postgresql.sspi.SSPIClient

Запускаю получившийся бинарник и получаю следующую ошибку:

Exception in thread «main» org.postgresql.util.PSQLException: Could not find a java cryptographic algorithm: TLS SSLContext not available.

После некоторых исследований была выявлена причина ошибки: Postgres по умолчанию устанавливает TLS соединение с использованием Elliptic Curve. В SubstrateVM не входит реализация таких алгоритмов для TLS, вот соответствующий открытый issue — Single-binary ECC (ECDSA/ECDHE) TLS support for SubstrateVM. Вариантов решения несколько: положить рядом с приложением библиотеку из поставки GraalVM: libsunec.so, на сервере Postgres настроить список алгоритмов, исключив Elliptic Curve алгоритмы или просто отключить установку TLS соединения в драйвере Postgres (этот вариант и был выбран):

Устранив ошибку создания соединения с Postgres, запускаю нативное приложение, оно выполняется и выводит данные из базы данных.

DI framework и встроенный web-сервер

При разработке сложного приложения на Java обычно используют какой-нибудь framework, например, Spring Boot. Но судя по этой статье GraalVM native image support, работу Spring Boot в native image «из коробки» нам обещают только в версии Spring Boot 5.3.

Но есть замечательный framework Micronaut, в котором заявлена работа в GraalVM native image. В целом подключение Micronaut к приложению, которое будет собираться в бинарник, не требует каких-то специальных настроек и решения проблем. Действительно, многие настройки использования рефлекшена и подключения ресурсов для Substrate VM уже сделаны внутри Micronaut. Кстати, такие же настройки можно разместить и внутри своего приложения в файле настроек META-INF/native-image/$/$/native-image.properties (такой путь для файла настроек рекомендует Substrate VM), вот типичное содержание файла:

Файлы resource-config.json, reflect-config.json, proxy-config.json содержат настройки подключения ресурсов, рефлекшена и использованных прокси (Proxy.newProxyInstance). Эти файлы можно создать вручную или получить, используя agentlib:native-image-agent. В случае использования native-image-agent нужно запустить обычный jar (а не нативный бинарник) с использованием агента:

где output — каталог, в котором разместятся файлы, описанные выше. При этом программу нужно не просто запустить, но и исполнить сценарии в программе, потому что в файлы записываются настройки по мере использования рефлекшена, открытия ресурсов, создания прокси. Эти файлы можно поместить META-INF/native-image/$/$ и сослаться на них в native-image.properties.

Я решил подключить логирование с помощью logback: добавил зависимость на библиотеку logback-classic и файл logback.xml. После этого собрал обычный jar и запустил его с использованием native-image-agent. При завершении программы нужные файлы настроек. Если посмотреть их содержимое, можно увидеть, что агент зарегистрировал использование logback.xml, чтобы вкомпилить в бинарник. Также, в файл reflect-config.json попали все случаи использования рефлекшена: для заданных классов в бинарник попадет мета-информация.

Затем я добавил зависимость на библиотеку micronaut-http-server-netty для использования встроенного web-сервера на основе netty и создал контроллер:

Теперь можно попробовать собрать нативный бинарник. У меня сборка заняла 4 минуты. Если его запустить и перейти по адресу http://localhost:8080/hello/user то выпадает ошибка:

Честно говоря не совсем ясно, почему так происходит, но после исследования методом тыка я обнаружил, что ошибка исчезает, если из файла resource-config.json (который был создан агентом) убрать следующие строки:

Эти ресурсы регистрирует Micronaut и похоже, что повторная регистрация приводит к двойной регистрации моего контроллера и ошибке. Если после исправления файла пересобрать бинарник и запустить, то ошибок уже не будет, по адресу http://localhost:8080/hello/user выведется текст «Hello user».

Хочу обратить внимание на использование в main классе следующей строчки:

Ее нужно вставлять для корректного завершения Micronaut. Несмотря на то, что Micronaut вешает хук на завершение работы, он не срабатывает в нативном бинарнике. Есть соответствующий issue: Shutdownhook not firing with native. Он отмечен как исправленный, но, по факту, в нем только обходное решение с использованием класса Signal.

Подключение ORM

JDBC это хорошо, но утомляет повторяющимся кодом, бесконечными SELECT и UPDATE. Попробую облегчить (или усложнить, смотря с какой стороны смотреть) себе жизнь, подключив какой-нибудь ORM.

Hibernate

Сначала я решил попробовать Hibernate, так как он один из самых распространенных ORM для Java. Но у меня не получилось собрать native image с использованием Hibernate из-за ошибки сборки:

Дальше я решил попробовать jOOQ. Мне удалось собрать нативный бинарник, правда при этом пришлось сделать много настроек: указание, какие классы, когда инициализировать (buildtime, runtime), возиться с рефлекшеном. В итоге все уперлось в то, что при запуске приложения jOOQ инициализирует прокси org.jooq.impl.ParserImpl$Ignore как статический член класса org.jooq.impl.Tools. А данный прокси использует MethodHandle, которые Substrate VM пока не поддерживает. Вот похожий открытый issue: [native-image] Micronaut + Kafka fails to build native image with MethodHandle argument could not be reduced to at most a single call.

Apache Cayenne

Apache Cayenne менее распространен, но выглядит достаточно функциональным. Попробую его подключить. Я создал XML файлы описания схемы базы данных, их можно создать как вручную, так и с помощью CayenneModeler GUI tool, либо на основе уже существующей базы данных. С помощью cayenne-maven-plugin в pom файле будет осуществляться кодогенерация классов, которые соответствуют таблицам базы данных:

Затем я добавил класс CayenneRuntimeFactory для инициализации фабрики контекстов работы с БД:

Потом запустил программу как обычный jar, с использованием агента agentlib:native-image-agent, для сбора информации об использованных ресурсах и рефлекшене.

Собрал нативный бинарник, запускаю, перехожу по адресу http://localhost:8080/hello/user и получаю ошибку:

оказывается agentlib:native-image-agent не обнаружил использования этого класса в рефлекшене.

Вручную добавил его в файл reflect-config.json:

Снова собираю бинарник, запускаю, обновляю web-страничку и получаю другую ошибку:

Тут все понятно, добавляю настройку, как указано в предлагаемом решении. Опять собираю бинарник (это 5 минут времени), снова запускаю и снова ошибка, другая:

С этой ошибкой пришлось повозиться, после многочисленных тестов, изучения исходников стало понятно что причина ошибки кроется в этой строчке из класса org.apache.cayenne.resource.URLResource:

Как оказалось, Substrate VM загружает ресурс по url, который указывается в качестве базового, а не по url, который должен формироваться на основе базового и relativePath. О чем был мною зарегистрирован следующий issue: Invalid resource content when using new URL(URL context, String spec).

Ошибка определена, теперь нужно искать варианты обхода. К счастью Apache Cayenne оказался достаточно настраиваемой штукой. Нужно было зарегистрировать свой собственный загрузчик ресурсов:

Собираю бинарник (70 МБ), запускаю, перехожу на http://localhost:8080/hello/user и все работает, на страницу выводятся данные из базы данных.

Выводы

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

Да, возможность собирать обычные бинарники из исходного кода Java пока еще находится в экспериментальном статусе. Это видно по обилию проблем, необходимости искать обходные пути. Но в итоге все равно получилось добиться желаемого результата. Что же я получил?

Источник

Микросервисы: от CRUD до Native Image. Часть вторая

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

Эта половина статьи сосредоточится на опыте нашей команды BellSoft. Поговорим о том, каким образом мы взаимодействуем с миром микросервисов: здесь будет и про универсальный Java-рантайм, и про крошечные контейнеры, и про Spring. Я разложу микросервис на слои, соберу в образ, запущу и покажу, что влияет на его скорость.

Помним о результате

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

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

Роль веб-сервера

Фреймворки сосредотачиваются на подключении настраиваемых компонентов верхнего уровня. А на нижнем — мир протоколов передачи данных, таких как HTTP; так что между сетевыми подключениями и бизнес-логикой необходим посредник. Кроме того, есть потребность в управлении состояниями (контекстами), ресурсами, безопасностью. За всё это отвечают веб-серверы. Раньше один веб-сервер контролировал сразу несколько приложений, все они требовали независимой конфигурации. Но, например, в контейнере каждый микросервис может быть связан со своим собственным экземпляром сервера, который централизованно настроен через фреймворк, как это происходит с Undertow в Spring или с Embedded Tomcat.

Новая парадигма Serverless, несмотря на название, фактически не исключает веб-сервер. Просто избавляет команду от его конфигурации и запуска. Сервер предоставляется как услуга совместно с выполнением «функций» бизнес-логики и их зависимостей (FaaS).

JVM как фундамент

JVM и стандартная библиотека классов составляют основу для веб-сервера, других библиотек и бизнес-логики. Сюда включаются сеть, потоки, синхронизация, динамические прокси, загрузчики классов. Байт-код разработчика верифицируется и исполняется рантаймом, а также мониторится встроенными инструментами диагностики, такими как Mission Control.

Динамические прокси

Вспомним для примера одну из важных фич платформы. При построении слабосвязанных систем критически важна рефлексия. Удобно создавать и перезагружать классы прямо в ходе исполнения программы.

В Java мы можем создать наблюдателя (facade), который перехватывает вызовы методов интерфейса с помощью стандартного API java.lang.reflect.Proxy и java.lang.reflect.InvocationHandler. Это реализация шаблона Dynamic Proxy, и она широко используется в CDI-контейнерах.

Гибкость

JIT-компиляторы и сборщики мусора гибко настраиваются в зависимости от нужд приложения. Всегда есть требования к пропускной способности и времени отклика, а также ограничения по ресурсам. Их потребление дорого стоит: трафик при деплое, загрузка памяти и процессора хоста, использование диска — всё это не бесплатно.

JRE может обновляться отдельно от бизнес-логики. А значит, патчи безопасности, фичи и оптимизированные дефолты появляются сразу в проде. При этом основной код не требует ни изменений, ни пересборки; только скомпилированные артефакты требуют тестирования на обновленной JVM. Новые функции не только влияют на поведение JVM, но и порой сразу подхватываются фреймворками и веб-серверами (конфигурация при этом может измениться), чтобы обеспечить более эффективное и безопасное исполнение приложений. Пара примеров:

Сборщики мусора стали возвращать память в ОС. Это направление эволюционирует буквально на глазах — на отрезке JDK 11–16 в ряде конфигураций показатели, связанные с latency, улучшились на 40%, причём в нескольких GC!

Строки требуют меньше памяти.

Поддерживается TLS 1.3.

Появляется и развивается JFR, и его можно использовать для диагностики микросервисов в контейнерах.

Скоро record’ы и легковесные потоки Project Loom в корне изменят работу классов данных и сетевых соединений. Думаю, все уже не раз перечитали по второй теме обе части State of Loom Рона Пресслера.

Я понимаю, что, во-первых, асинхронное или функциональное программирование зачастую сложно. А во-вторых, оно не позволяет полностью избежать нежелательных эффектов синхронных и блокирующих операций, таких как работа с базами данных (даже через асинхронные драйверы!) и прочим вводом-выводом (даже через NIO). Конкретно для случая веб-серверов Рон и упоминает, что параллельная обработка означает обработку в потоках. При этом число параллельных потоков в железе (и, соответственно, эффективных полновесных потоков ОС) сейчас составляет от единиц до сотен, в среднем десятки. В то время как параллельные потоки Loom, на которые можно будет пересадить обработку соединений, исчисляются сотнями тысяч.

Фреймворки

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

Интересно, что разные фреймворки существуют не сами по себе, а связаны друг с другом и с другими технологиями. Например, Eclipse MicroProfile связан с Java EE, но ориентирован на микросервисы. Вообще, нередко фреймворки поддерживают несколько разных API. И в Spring, и в Quarkus частично реализована спецификация CDI, хотя у них есть собственные инструменты с аналогичным функционалом. Еще один пример — введение аннотаций Spring в Quarkus, что помогает переносить код с минимальными изменениями.

Сложим всё вместе

Итак, мы собрали части микросервиса: JVM, веб-сервер, фреймворки, библиотеки. Также определены целевая ОС, системные пакеты и оборудование. Это единое целое может быть упаковано в контейнерные образы, и гибко деплоиться в разных окружениях с помощью какого-нибудь Docker или Podman.

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

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Внимательный читатель возмутится: «как это OS Packages поверх JRE?» Но здесь OS Packages — дополнительные пакеты, которые нужны для работы приложения, а не самой JRE. При настройке приходится учитывать, что все слои должны взаимодействовать друг с другом, корректно работать в операционке на удалённом хосте и сообщаться с внешними системами. Разработчики и DevOps занимаются конфигурациями в каком-нибудь YAML, где в итоге можно увидеть что-то такое:

Наконец, есть системы оркестрации, например Kubernetes и Marathon, которые позволяют распределять контейнеры в кластере машин. На этом этапе мы уже имеем дело с полностью сконфигурированными контейнерами, которые развёрнуты в парке серверов и, возможно, связаны с SaaS-компонентами в облаке.

Битва за ресурсы

Микросервис настроен и запущен. Возникает один важный вопрос: как минимизировать потребление ресурсов?

Есть несколько показателей, которые можно попробовать улучшить:

Выбор рантайма — отдельная захватывающая тема. Тут моё мнение предвзято. BellSoft выпускает базовые образы Liberica JDK размером 107 МБ. (Бонусом для CLI-приложений и им подобных идёт вариант 41,5 МБ с Alpine Linux musl — самый маленький контейнер с Java.)

Кстати, если вам просто нужен максимально стандартный образ, то Liberica JDK включается по умолчанию в контейнерную сборку Spring Boot. Чтобы её построить, достаточно просто выполнить простую команду вроде

Запуск даже небольшого приложения требует относительно много памяти. Мы провели эксперимент с примерами из доклада «Не клади все яйца в один контейнер» и оптимизацией, запустив проект в разных конфигурациях. Напомню, что это простой Spring Boot сервис с Actuator. С thin jar и AppCDS скорость запуска выросла почти в 2,5 раза! Более подробные результаты есть в таблице ниже.

Ускорение до пары секунд — это отлично. Но иногда хочется (или нужно добиться) абсолютно мгновенного старта. И тогда в дело вступает Native Image.

Native Image

При сборке в Native Image тот же проект использовал всего лишь 35 МБ ОЗУ и запускался за 1/10 секунды! При этом размер самого Native Image на диске составил всего 89 МБ.

Сочетание компилятора Graal в режиме AOT и виртуальной машины Substrate VM нацелено на то, что приложение будет запускаться моментально, съедать совсем немного памяти, занимать мало места на диске, и при этом работать быстро. Что важно, такой особенный способ сборки легко доступен: нужно просто добавить пару зависимостей и немного изменить основной шаг в скриптах. И можно использовать команды вида

Отличный результат.

Для работы Native Image вообще не нужен слой с полноценной JDK, ведь такой контейнер по сути представляет собой обычный исполняемый файл. Базовый контейнер может в принципе быть «scratch»-образом с минимальной функциональностью. Проект будет работать в случае, если приложение содержит все свои зависимости. Так, например, Native Image может быть статически слинкован со стандартной библиотекой C.

В базовом контейнере для Native Image могут также присутствовать сертификаты, библиотеки SSL и динамически загружаемая библиотека C. Тогда базовый образ будет так называемым distroless, «без дистрибутива». В реестре gcr есть такие distroless images без libc от 2 МБ (base). Это немногим меньше, чем размер минимального образа Alpine Linux, однако вместе с glibc выходит уже намного больше — 17 МБ.

Сравним контейнеры с Native Image, thin jar и fat jar:

Источник

Assembly что это за папка

Многие дотошные пользователи ОС Windows, рассматривая субдиректории, расположенные в системной папке Windows, могут обратить внимание на папку «Assembly», обладающую, подчас, довольно внушительными размерами. У пользователя может возникнут желание избавиться от её содержимого, что делать ни в коем случае не следует, так как находящиеся в данной директории файлы имеют важное значение для работы ОС Windows. В данном материале я расскажу, что за директория Assembly, каково её назначение, и как почистить её от ненужных файлов.

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Что за папка Assembly?

Также в директории «Assembly» довольно часто могут находиться различные обновления к ОС Виндовс, подготавливаемые для установки в операционную систему.

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программаБольшинство находящихся в папке assembly файлов — это dll-библиотеки

Особенности содержимого папки Assembly

В большинстве случаев, в папке Assembly находятся несколько субдиректорий, с названиями «GAC_32», «GAC_64», «GAC_MSIL», «GAC», папки «NativeImages» различных версий, а также папки для хранения временных файлов («temp», «tmp»).

В папке «NativeImages» находятся компиляции промежуточного языка Майкрософт (под названием «MSIL») в виде собственных изображений сборок, выполненных с помощью генератора изображений «NGEN».

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Как почистить содержимое папки Assembly

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

Достойным вариантом в данном случае является использование программных инструментов, специально предназначенных для очистки вашей системы от нежелательного софта. Среди них могу посоветовать CCleaner, ToolWiz Care, Ashampoo WinOptimizer и ряд других аналогов, предназначенных для удобной очистки системы от лишних файлов.

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программаИспользуйте «Ashampoo WinOptimizer» для очистки системы от ненужных файлов

Заключение

В данной статье было рассмотрено, что за папка под именем Assembly, каково её предназначение и функционал. Данная директория служит для хранения библиотек и системных компонентов «.NET Framework», потому важно не только беречь её содержимое, но и вовремя следить за обновлением самой программной платформы «.NET Framework». Это гарантирует стабильную работу вашей системы, а вам – наслаждение от функционала вашего ПК.

Источник

Удалить PC вредоносных программ

Monday, June 30, 2014

Шаг 1.Правой нажмите на значок Мой компьютер, после нажмите выбрать опцию Свойства, а затем выбрать вкладка Восстановление системы, где «Отключить восстановление системы» функция появится.

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Шаг 3. поиск для файла, как C: \ Documents и Settings \ All Users \ Immediate-support \ и удалите его вручную.

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Шаг 1: Во-первых скачать и установить программное обеспечение удаления Immediate-support в вашей системе. После того, как была установлена​​, дважды щелкните значок на рабочем столе, чтобы выполнить его. Нажмите кнопку «Проверить компьютер», который может начать поиск вируса в компьютере.

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Шаг 2: Автоматическая Immediate-support Removal Tool является сканирование системы жесткого диска, где зараженные предметы помещаются. После завершения сканирования затем показать в формате миниатюрами с описанием зараженных предметов.

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Шаг 3: Программное обеспечение есть в населенных атрибутов, которые доступны как «Immediate-support HelpDesk». После заражения, эта функция может дать полную помощь и информация относительно этого вредителя.

Native image player что это за программа. Смотреть фото Native image player что это за программа. Смотреть картинку Native image player что это за программа. Картинка про Native image player что это за программа. Фото Native image player что это за программа

Шаг 4: «Система гвардия» является еще одной особенностью, которая может использовать, чтобы остановить каждые вредоносных содержимое приехать к вашему компьютеру через Интернет и ПК становятся все более надежной и безопасной.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *