JavaRush /Blog Jawa /Random-JV /Кофе-брейк #60. Как работает сборка мусора в Java (JVM). ...

Кофе-брейк #60. Как работает сборка мусора в Java (JVM). 15 важных вопросов про Spring на техническом собеседовании

Diterbitake ing grup

Как работает сборка мусора в Java (JVM)

Источник: DZone

Процесс сборки мусора в Java

Сборка мусора в Java автоматически выделяет и освобождает память, поэтому разработчикам не нужно писать отдельную программу для управления памятью, что является одним из основных преимуществ программирования на Java. Каждый раз, когда Java-программа запускается на JVM, an objectы создаются в куче (heap) и представляют собой часть памяти, предназначенную для программы. Со временем некоторые предметы больше не понадобятся. Сборщик мусора находит эти неиспользуемые an objectы и удаляет их, чтобы освободить память.Кофе-брейк #61. Как работает сборка мусора в Java (JVM). 15 важных вопросов про Spring на техническом собеседовании - 1Сборщик мусора, оценив кучу памяти, определит, Howие an objectы используются, а Howие нет, и удалит неиспользуемые an objectы. We useый an object or an object, на который имеется link, означает, что некоторая часть вашей программы все еще поддерживает указатель на этот an object. Если an object уже не используется or, на него нет ссылок, то Howая-либо часть программы на него больше не будет ссылаться. Таким образом, память, которая используется an objectом, на который нет ссылки, может быть освобождена путем выполнения сборки мусора.Кофе-брейк #61. Как работает сборка мусора в Java (JVM). 15 важных вопросов про Spring на техническом собеседовании - 2Освобождение памяти можно описать тремя основными процессами:
  1. Маркировка.
  2. Обычное удаление.
  3. Удаление с уплотнением.
Маркировка — это процесс идентификации частей памяти, которые используются и не используются сборщиком мусора. Обычно маркировка является первым этапом. Обычное удаление — процесс удаления an objectов, на которые нет ссылок, с оставлением в свободном пространстве an objectов и указателей, на которые есть ссылки. Удаление с уплотнением — помимо удаления an objectов, на которые нет ссылок, оно сжимает оставшиеся an objectы, на которые имеются ссылки, перемещая an objectы вместе, чтобы сделать новое выделение памяти намного проще и быстрее.

JVM Heap Memory

Кофе-брейк #61. Как работает сборка мусора в Java (JVM). 15 важных вопросов про Spring на техническом собеседовании - 3

Young Generation

Вновь созданные an objectы начинаются в Young Generation. Его еще называют ясли, так How здесь начинают жить новые an objectы. Young Generation подразделяется на Eden Space, где начинаются все новые an objectы, и два пространства Survivor , где an objectы перемещаются из Eden после сохранения (surviving) в одном цикле сборки мусора. Они вызывают повторную сборку мусора, когда an objectы собираются сборщиком мусора из Young Generation. Eden Space Все новые an objectы сначала создаются в Eden Space. Незначительный сбор мусора сработает, когда он достигнет порога, определяемого JVM. Упомянутые an objectы перемещаются из Eden Space в пространство первого сохранения (‘Eden’ and ‘from’ —> ‘to’). Объекты, на которые нет ссылок, удаляются при очистке Eden Space. Survivor 0 (S0) and Survivor 1 (S1) Оба поля survivor (From and to) начинаются пустыми. Когда происходит повторная сборка мусора, все an objectы, на которые есть ссылки, перемещаются в оставшееся пространство. Когда сборка мусора закончится, места (имена) survivor «from» и «to» меняются местами. Если во время предыдущей сборки мусора S1 был в роли «to», то теперь S1 заполнен и становится «from». Соответственно, если S0 пусто, то оно станет «to».

Old Generation

После незначительной сборки мусора, когда устаревшие an objectы достигают определенного порога возраста (по умолчанию порог современных JVM установлен на 15 циклов сборки мусора), они вместе с an objectми-долгожителями переходят из молодого поколения в старое. Поскольку второстепенные сборщики мусора продолжают возникать, an objectы продолжают перемещаться в пространство Old Generation, оно начнет заполняться и произойдет основной сбор мусора. Основная сборка мусора происходит, когда an objectы собираются сборщиком мусора Old Generation. Кофе-брейк #61. Как работает сборка мусора в Java (JVM). 15 важных вопросов про Spring на техническом собеседовании - 4

Permanent Generation

Метаданные, такие How классы и методы, хранятся в Permanent Generation (постоянном поколении). Классы, которые больше не используются, могут быть из него удалены сборщиком мусора. Во время полного сбора мусора неиспользуемые an objectы всех поколений собираются.Кофе-брейк #61. Как работает сборка мусора в Java (JVM). 15 важных вопросов про Spring на техническом собеседовании - 5

Типы сборки мусора

Сборки мусора, очищающие различные части внутри кучи, часто называют Minor, Major и Full сборками мусора. Но, поскольку термины Minor, Major и Full широко используются и без надлежащего определения, мы рассмотрим объяснение всех этих типов сборки мусора.

Minor Garbage Collection

Сборка мусора из пространства Young Generation называется Minor Garbage Collection. Этот тип сборки всегда запускается, когда JVM не может выделить место для нового an object, то есть когда Eden Space заполняется. Таким образом, чем выше speed выделения, тем чаще происходит Minor Garbage Collection.

Major Garbage Collection

Major Garbage Collection очищает Tenured (старое пространство). Поскольку Old Generation больше по размеру, сборка происходит реже, чем у Young Generation. Когда an objectы исчезают из Old Generation, мы говорим, что произошел «большая сборка мусора». Сборщик Old Generation попытается предугадать, когда ему нужно начать сборку, чтобы избежать неудач в продвижении со стороны Young Generation. Сборщики отслеживают порог заполнения для Old Generation и начинают сборку, когда этот порог превышен. Если этого порога недостаточно для удовлетворения требований продвижения, запускается «Full Garbage Collection».

Full Garbage Collection

Full Garbage Collection очищает всю кучу — How молодые, так и старые пространства. Многие путаются между Major (только OLD поколение) и Full GC (Young + OLD (Heap)). Full Garbage Collection включает продвижение всех живых an objectов от молодого до старого поколения после сборки и уплотнения старого поколения. Полная сборка мусора будет остановкой для Stop-the-World. Она следит за тем, чтобы новые an objectы не выделялись и an objectы не становorсь недоступными во время работы сборщика.

15 важных вопросов про Spring на техническом собеседовании

Источник: Dev.to Spring Framework — это универсальный фреймворк для платформы Java. Его основные функции могут использоваться любым приложением Java, также существуют расширения для создания веб-приложений на основе Java EE. Представляем вашему вниманию список вопросов и ответов на собеседовании, относящихся к codeированию на Spring. Надеемся, что они помогут вам подготовиться к техническому собеседованию в 2021 году.Кофе-брейк #61. Как работает сборка мусора в Java (JVM). 15 важных вопросов про Spring на техническом собеседовании - 6

1. What такое Spring?

Ответ: Spring — это фреймворк с открытым исходным codeом для разработки приложений на Java. Основные функции Spring Framework можно использовать при разработке любого applications Java, также имеются расширения для создания веб-приложений на основе платформы Java EE. Фреймворк Spring нацелен на упрощение использования J2EE в разработке, и улучшение практики программирования путем включения модели на основе POJO (Plain Old Java Object).

2. Какова область действия по умолчанию у bean-компонента в Spring framework?

Ответ: Область действия bean-компонента по умолчанию — Singleton (шаблон проектирования).

3. What такое Bean wiring?

Ответ: Bean wiring (подключение Bean) — это действие по созданию ассоциаций между компонентами applications (beans) в контейнере Spring.

4. What такое Spring Security?

Ответ: Spring Security — это отдельный модуль инфраструктуры Spring, который фокусируется на предоставлении методов аутентификации и авторизации в applicationsх Java. Он также устраняет большинство распространенных уязвимостей безопасности, таких How атаки CSRF. Whatбы использовать Spring Security в веб-applicationsх, можно начать с простой аннотации: @EnableWebSecurity.

5. What содержится в определении bean-компонента?

Ответ: Определение bean-компонента содержит информацию, называемую метаданными конфигурации, которая необходима контейнеру, чтобы знать следующее:
  • Как создать bean;
  • Подробности жизненного цикла bean;
  • Зависимости bean.

6. What такое Spring Boot?

Ответ: Spring Boot — это проект, который предоставляет предварительно настроенный набор фреймворков для уменьшения шаблонной конфигурации, чтобы вы могли запускать и запускать приложение Spring с минимальным объемом codeа.

7. What такое DispatcherServlet и для чего он используется?

Ответ: DispatcherServlet — это реализация шаблона проектирования Front Controller, который обрабатывает все входящие веб-requestы к приложению Spring MVC. Шаблон Front Controller (шаблон проектирования корпоративного applications) — это распространенный шаблон в веб-applicationsх, задача которого заключается в получении всего requestа и его маршрутизации в различные компоненты applications для фактической обработки. В Spring MVC DispatcherServlet используется для поиска правильного контроллера для обработки requestа. Это делается с помощью сопоставления обработчиков: например, аннотации @RequestMapping.

8. Нужен ли spring-mvc.jar в пути к классам or он является частью spring-core?

Ответ: Spring-mvc.jar является частью spring-core, что означает, что если вы хотите использовать инфраструктуру Spring MVC в своем проекте Java, то вы должны включить ее spring-mvc.jar в way to классам вашего applications. В веб-приложении Java spring-mvc.jar обычно помещается в папку /WEB-INF/lib.

9. Каковы преимущества использования Spring?

Ответ: Ниже приводится список некоторых преимуществ использования Spring Framework:
  • Легкость — Spring относительно легкий, когда дело касается размера и прозрачности. Базовая version Spring Framework составляет около 2 МБ.
  • Инversion управления (Inversion of control, IOC) — Слабая связанность (loose coupling) достигается в Spring с использованием техники инверсии управления. Объекты предоставляют свои зависимости instead of того, чтобы создавать or искать зависимые an objectы.
  • Аспектно-ориентированность — Spring поддерживает аспектно-ориентированное программирование и обеспечивает согласованную разработку, отделяя бизнес-логику applications от системных служб.
  • Контейнеры — Spring Container создаёт an objectы, связывает их вместе, настраивает и управляет ими от создания до момента удаления.
  • MVC Framework — веб-фреймворк Spring — это хорошо спроектированный веб-фреймворк MVC, который обеспечивает альтернативу таким веб-фреймворкам, How Struts or другим излишне спроектированным or менее популярным веб-фреймворкам.
  • Управление транзакциями — Spring имеет согласованный интерфейс управления транзакциями, который может масштабироваться до локальной транзакции (например, с использованием одной базы данных) or глобальных транзакций (например, с использованием JTA).
  • Обработка исключений — Spring предоставляет удобный API для преобразования исключений, связанных с конкретной технологией (например, вызванных JDBC, Hibernate or JDO) в согласованные, непроверенные исключения.

10. What такое Spring beans?

Ответ: Spring beans — это экземпляры an objectов, которыми управляет Spring Container. Они создаются и подключаются фреймворком и помещаются в «мешок an objectов» (контейнер), откуда вы можете их позже извлечь. «Связка» (wiring) — это то, что является внедрением зависимостей. Это означает, что вы можете просто сказать: «Мне нужна эта вещь», и фреймворк будет следовать определенным правилам для получения этого an object.

11. Какова цель модуля Core Container?

Ответ: Контейнер ядра обеспечивает основные функции платформы Spring. Первичным компонентом основного контейнера является BeanFactory — реализация шаблона Factory. BeanFactory применяет Инверсию управление для разделения конфигурации и зависимостей спецификации applications от фактического codeа applications.

12. What такое контекст applications (Application Context)?

Ответ: На первый взгляд, контекст applications такой же, How и фабрика компонентов (bean factory). Оба загружают определения bean-компонентов, объединяют bean-компоненты вместе и распределяют их по requestу. Но он также обеспечивает:
  • Средство для разрешения текстовых сообщений, включая поддержку интернационализации.
  • Общий способ загрузки файловых ресурсов.
  • События для beans, которые зарегистрированы How слушатели (listeners).

13. Как интегрировать Java Server Faces (JSF) с Spring?

Ответ: JSF и Spring действительно имеют одни и те же функции, особенно в области сервисов Инверсии управления. Объявляя управляемые компоненты JSF в файле конфигурации faces-config.xml, вы позволяете FacesServlet создавать экземпляр этого bean-компонента при запуске. Ваши pages JSF имеют доступ к этим bean-компонентам и всем их свойствам. JSF и Spring можно интегрировать двумя способами: DelegatingVariableResolver: Spring поставляется с преобразователем переменных JSF, который позволяет вам использовать JSF и Spring вместе. DelegatingVariableResolver сначала делегирует поиск значений интерпретатору по умолчанию базовой реализации JSF, а затем — «бизнес-контексту» Spring WebApplicationContext. Это позволяет легко внедрять зависимости в JSF-управляемые компоненты. FacesContextUtils: настраиваемый VariableResolver хорошо работает при отображении своих свойств на bean-компоненты в faces-config.xml. Но если потребуется захватить bean-компонент, то класс FacesContextUtils это упрощает. Он похож на WebApplicationContextUtils, за исключением того, что принимает параметр FacesContext, а не параметр ServletContext.

ApplicationContext ctx = FacesContextUtils.getWebApplicationContext (FacesContext.getCurrentInstance ());

14. What такое Spring MVC framework?

Ответ: Инфраструктура Spring Web MVC предоставляет архитектуру model-view-controller и готовые компоненты, которые можно использовать для разработки гибких и слабосвязанных веб-приложений. Шаблон MVC приводит к разделению различных аспектов applications (логика ввода, бизнес-логика и логика пользовательского интерфейса), обеспечивая при этом слабую связь между этими elementми.

15. Как происходит обработка событий в Spring?

Ответ: Обработка в ApplicationContext обеспечивается через ApplicationEvent класса и ApplicationListener интерфейса. То есть если bean-компонент реализует ApplicationListener, то каждый раз, когда ApplicationEvent публикуется в ApplicationContext, этот bean-компонент регистрируется. Спасибо за чтение и удачи в вашем техническом собеседовании!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION