ВСзисы

  • Class Loader Subsystem β€” Ρ‡Π°ΡΡ‚ΡŒ JVM, отвСтствСнная Π·Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, связываниС ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ классов.
  • Π₯Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… классах ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ скомпилированныС Ρ„Π°ΠΉΠ»Ρ‹ классов (Class Files) Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ.
  • Π‘Π±ΠΎΡ€ΠΊΠ° мусора здСсь Π½Π΅ производится, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ OutOfMemoryException ΠΏΡ€ΠΈ создании большого количСства классов β€œΠ½Π° лСту”.
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ этапы Ρ€Π°Π±ΠΎΡ‚Ρ‹: Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, связываниС ΠΈ инициализация классов.
  • Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Classloader, Ρ‡Ρ‚ΠΎ позволяСт Π³ΠΈΠ±ΠΊΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ классов.

Class Loader Subsystem β€” это Ρ‡Π°ΡΡ‚ΡŒ JVM, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссом Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, связывания ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ классов. Π—Π΄Π΅ΡΡŒ хранится информация ΠΎ классах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Он Π±Π΅Ρ€Π΅Ρ‚ скомпилированныС Ρ„Π°ΠΉΠ»Ρ‹ классов (Class Files) ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΡ… для использования Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сборка мусора Π² этой части JVM Π½Π΅ производится, поэтому ΠΏΡ€ΠΈ создании большого количСства классов β€œΠ½Π° лСту” сущСствуСт риск получСния ошибки OutOfMemoryException.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ этапы Ρ€Π°Π±ΠΎΡ‚Ρ‹ Class Loader Subsystem

  1. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° (Loading): На этом этапС Class Loader Subsystem Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ классов Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Classloader (Bootstrap, Extension, Application), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ доступ ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ классам Π² зависимости ΠΎΡ‚ ΠΈΡ… принадлСТности.
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° (Verification): ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов выполняСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΡ… коррСктности. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для прСдотвращСния ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ JVM ΠΈΠ»ΠΈ привСсти ΠΊ сбоям. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ· структуры Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, соотвСтствиС стандартам Java ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‹ бСзопасности.
  3. БвязываниС (Linking): Π­Ρ‚ΠΎΡ‚ этап Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ нСсколько подпроцСссов:
    • ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° (Preparation): Π‘ΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ статичСскиС поля классов ΠΈ выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π½ΠΈΡ…, Π½ΠΎ Π½Π΅ происходит ΠΈΡ… инициализация.
    • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ (Resolution): Π Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ссылки Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы ΠΈ ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ JVM ΠΌΠΎΠ³Π»Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с зависимостями ΠΌΠ΅ΠΆΠ΄Ρƒ классами.
  4. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ (Initialization): На этом этапС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ статичСскиС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ классов ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ этап, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ класс Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ использованию.

ΠœΠ΅Ρ‚Π° информация

ΠžΠ±Π»Π°ΡΡ‚ΡŒ:: 00 Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ:: АрхитСктура JVM
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ::
Автор::
Π‘ΠΎΠ·Π΄Π°Π½Π°:: 2023-11-06

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ