Java ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ: Do It Yourself Java Profiling / Π₯Π°Π±Ρ
Do It Yourself Java Profiling / Π₯Π°Π±Ρ
ΠΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Appication Developer Days, Π ΠΎΠΌΠ°Π½ ΠΠ»ΠΈΠ·Π°ΡΠΎΠ² (elizarov) ΡΠ°ΡΡΠΊΠ°Π·Π°Π», ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ, Ρ.Π΅. ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π»ΡΠ±ΡΡ
Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π±ΡΠ΄Ρ ΠΎΠ½ΠΈ Ρ
ΠΎΡΡ Π²Π΅Π½Π΄ΠΎΡΡΠΊΠΈΠ΅, Ρ
ΠΎΡΡ open-source.ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°Π»ΠΎΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² JVM Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ (threaddumps, java agents, bytecode manipulation), ΠΈ Π±ΡΡΡΡΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π° Π±ΠΎΠ΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.ΠΠΎΡ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° (ΡΡΡ ΠΎΠ½ΠΎ ΠΊΠΎΡΠΎΠ»Π°ΠΏΠΎ ΡΠΌΠ±Π΅Π΄ΠΈΡΡΡ, Π½ΠΎ ΠΎΠ½ΠΎ 1280×720, Π²ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠΈΡΠ°Π΅ΠΌΠΎ):
ΠΠΎ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ°ΠΊΠΆΠ΅, Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° 70K ΡΠ΅ΠΊΡΡΠ° ΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ-ΡΡΠ΅Π½ΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ, ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ½ΠΎΠΉ ΠΏΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ ΡΠ»Π°ΠΉΠ΄Π°ΠΌ.
Π£ ΠΌΠ΅Π½Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΏΡΠΎ Β«Π‘Π΄Π΅Π»Π°ΠΉ ΡΠ΅Π±Π΅ ΡΠ°ΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π―Π²Π΅Β». Π‘Π»Π°ΠΉΠ΄Ρ Π±ΡΠ΄ΡΡ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ, Π΄ΠΎΠΊΠ»Π°Π΄ Ρ Π±ΡΠ΄Ρ Π΄Π΅Π»Π°ΡΡ Π½Π° ΡΡΡΡΠΊΠΎΠΌ. Π‘Π»Π°ΠΉΠ΄ΠΎΠ² ΠΎΡΠ΅Π½Ρ-ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ, Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±ΡΠ΄Ρ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΏΡΠΎΡΠΊΠ°ΠΊΠΈΠ²Π°ΡΡ, ΠΈ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΡΡΠ°Π²ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π°ΠΆΠ΅ Π³Π΄Π΅-ΡΠΎ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π·Π°Ρ
ΠΎΡΠ΅ΡΡΡ Π²Π΄ΡΡΠ³ ΡΡΠΎ-ΡΠΎ ΡΠΏΡΠΎΡΠΈΡΡ ΠΈΠ»ΠΈ ΡΡΠΎΡΠ½ΠΈΡΡ, ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ΅Π½Ρ ΠΏΡΠ΅ΡΠ²Π°ΡΡ. Π― Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΡΠ²Π΅ΡΡ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠ΅ΠΌ Π±ΡΠ΄Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ Ρ Ρ
ΠΎΡΠ΅Π» ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ.
ΠΠΎΠΊΠ»Π°Π΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΏΡΡΠ΅, ΠΌΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΡΡΡΠΈ Π»Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΡΡ , ΠΎΡΠ΅Π½Ρ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , Ρ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, c Π΄Π΅ΡΡΡΠΊΠ°ΠΌΠΈ ΡΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ½Π»Π°ΠΉΠ½, ΠΈ ΡΠ°ΠΌ, ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅, Π²ΡΠ΅Π³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π»ΡΠ±ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π±Π΅Π· ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. ΠΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΡΠ΅ΡΠ΅, Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ°, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅-ΠΏΡΠΎΡΠΈΠ»ΠΈΡΡΠ΅ΡΠ΅, ΡΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ ΡΠΈΠΊΠ». ΠΠΎΡΠ΅ΠΌΡ Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Do It Yourself Java ProfilerΒ», Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΠΎΠΌΡ? ΠΡΡΡ ΠΆΠ΅ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΠΎΡΠΎΠ²ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ β ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ.
ΠΠΎ Π΄Π΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ. ΠΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ β Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΠΆΠΈΠ²ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ. Π ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ°ΡΡΠ΅Π½ΡΠΊΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, Π½ΠΎ ΠΈ Π½Π° ΠΆΠΈΠ²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈ ΡΠ΅ΡΡΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎΠ΄ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. Π ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° ΠΌΠΎΠ³ΡΡ Π²ΡΡΠ²ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ . ΠΡ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ ΡΠ°ΠΊ, Π½ΠΎ Π²Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΠΏΠΎΡΠ΅ΠΌΡ. ΠΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π±Π»ΠΎΠ½ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ²ΠΈΠ»Π°ΡΡ β ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΆΠΈΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΈΡΠ΅ΠΌ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΅ΡΠ΅ Π·Π°Π΄Π°ΡΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ Β«Π±Π°Π½ΠΊΠΈΒ», Π³Π΄Π΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΡΡ Π²Π°ΡΠΈ Π΄Π΅Π½ΡΠ³ΠΈ, Π½ΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΡΠ°ΠΌΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ. ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ Π±ΡΠΎΠΊΠ΅ΡΡΠΊΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠΎΡΠ³ΠΎΠ²Π»ΠΈ, Π³Π΄Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ 24Γ7 Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ², ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ°Π΄Π°ΡΡ.
Π Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ Π²ΡΡ ΠΈΠ½Π΄ΡΡΡΡΠΈΡ Π·Π°ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°Π½Π°, ΠΈ ΠΌΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠΎ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°ΡΡΠ΅Π½ΡΠΊΠΎ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½Ρ. ΠΠ°, Π΅ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Β«ΡΡΠΎΒ», Π½ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ Π΄ΠΎΡΡΠ°Π΅Ρ ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°ΠΌΠ΅ΡΡΠ».
ΠΡΠΈΡΠ΅ΠΌ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠ½ΠΎΠ³ΠΎ, Π²Ρ ΡΠ±ΡΠ΅ΡΠ΅ ΠΊΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π½Π΅ΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π½Π°Π΄ΠΎ ΡΡΠΈΡΡΡΡ, Π° Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΡΠ°ΠΌΠΎΠΌΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΡΠ½Π΅ΠΉ. Π ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ΠΌ? ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, ΡΠΎ ΡΡΠΎΠΈΡ Π΅Π³ΠΎ ΡΡΠΈΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π»ΡΠ±ΠΈΠΌΠΎΠΉ Π²Π°ΠΌΠΈ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π²Ρ Π΅Π΅ Π·Π½Π°Π΅ΡΠ΅ Π²Π΄ΠΎΠ»Ρ ΠΈ ΠΏΠΎΠΏΠ΅ΡΠ΅ΠΊ, ΠΈ ΡΡΠΎ Π·Π½Π°Π½ΠΈΠ΅, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠΊΡΠΏΠ°Π΅ΡΡΡ Π²Π°ΠΌ ΡΡΠΎΡΠΈΡΠ΅ΠΉ.
Π Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π· Π² ΠΌΠ΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π· Π² ΠΌΠ΅ΡΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π΄ΠΈ Π±Π°Π³Π° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΠΎ Π½Π΅ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΎΠΊΡΠΏΠΈΡΡΡ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π΄Π°ΡΡ Π² ΡΠ°Π·Ρ Π±ΡΡΡΡΠ΅Π΅.
ΠΠ΅Π»Π°Ρ ΡΡΠΎ-ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ Π·Π½Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ Π΅ΡΡΡ Π·Π½Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ²ΠΎΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡ ΡΠ³Π»ΡΠ±ΠΈΡΡ, ΡΠ°ΡΡΠΈΡΠΈΡΡ, ΡΡΠΎΡΠ½ΠΈΡΡ, Π³Π»ΡΠ±ΠΆΠ΅ ΠΈΠ·ΡΡΠΈΠ² ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ. ΠΠΎΡΠ΅ΠΌΡ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎ Java? ΠΡ ΠΌΠ°Π»ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅Ρ Π½Π° Java, ΡΡΠΎ Π²Π΅Π΄ΡΡΠΈΠΉ ΡΠ·ΡΠΊ 2001 Π³ΠΎΠ΄Π° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ TIOBE, ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ enterprise ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ β ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Java β ΡΡΠΎ managed ΡΠ·ΡΠΊ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Java Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ. Π― Π±ΡΠ΄Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΏΡΠΎΡΡΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π² Π½Π΅ΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° Java. Π‘ΠΊΠ°ΠΆΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Java-ΠΌΠ°ΡΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠ΅, ΠΊΠ°ΠΊ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ CPU, ΡΠ°ΠΊ ΠΈ ΠΏΠ°ΠΌΡΡΠΈ. Π― ΡΠ°ΡΡΠΊΠ°ΠΆΠ΄Ρ ΠΏΡΠΎ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ. ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ CPU. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ ΠΈ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΡΠ΄Π°, ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΡΠ΅Π³ΠΎ, Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΡΠΎ ΡΠ°ΠΌΡΠΉ-ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±: Π½Π΅ Π½Π°Π΄ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΈΡΠ΅Π³ΠΎ β Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΡΠ΅ΠΊ ΠΊΠΎΠ΄Π°.
Π Java Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Β«currentTimeMillisΒ», ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΠΆΠ½ΠΎ Π΅Π΅ Π·Π°ΠΌΠ΅ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π·Π°ΠΌΠ΅ΡΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ, Π° Π΄Π°Π»ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ, ΡΡΠΌΠΌΠ°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π²ΡΠ΅ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. Π‘Π°ΠΌΡΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±. DIY Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΡΠ΅ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈΠ·ΠΌΠ΅.
ΠΠ°ΠΊ Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎ, Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΊΡΡΡ ΠΏΠΎΠ»ΡΠ·Ρ β ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΡΡΡΡ, ΡΠ΄ΠΎΠ±Π΅Π½ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½. ΠΠΎΠ³Π΄Π° ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? ΠΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅Ρ-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² β Π±ΠΈΠ·Π½Π΅Ρ-ΠΌΠ΅ΡΠΎΠ΄ Π±ΠΎΠ»ΡΡΠΎΠΉ, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ ΠΏΡΠΎ Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π½Π°ΠΏΠΈΡΠ°Π² ΡΡΠΎΡ ΠΊΠΎΠ΄, ΡΠ°Π· ΡΠΆ Π²Ρ Π΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ β ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°ΡΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°. ΠΠΎΠ»Π΅Π΅ ΠΌΠ΅Π½Π΅Π΅ Π»ΡΠ±ΠΎΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, β¦ ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠ΅Ρ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΡΠΎ Ρ ΠΎΡΠ΅ΡΡΡ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅Π±Π΅ Π²ΡΠ΄Π°Π²Π°Π»ΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°.
Π ΡΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ ΡΠ°ΠΌΠΎ ΡΠ΅Π±Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ. ΠΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°ΡΡΡΡ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΡΠ°ΡΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π² Π²Π°ΡΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΌΠ΅ΡΠΎΠ΄Π°Ρ , ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ, ΡΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½Π°. Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΠ·ΡΠ²Π°Π»ΠΈΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΠΈ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄ Π²Π°ΡΠΈΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ. ΠΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΡΠ΅Π΄Π½Π΅Π΅ ΡΡΠΈΡΠ°ΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎΠΈΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΡΠΈΡΠ°ΡΡ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ ΠΈ ΠΏΠ΅ΡΡΠ΅Π½ΡΠΈΠ»ΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΏΠΎ ΡΠ°Π·Π½ΠΎΠΌΡ, ΠΊΠ°ΠΊ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΊΡΠΎ ΡΡΠΏΠ΅Π» ΡΠ°Π·Π³Π»ΡΠ΄Π΅ΡΡ, ΠΏΠΎΠΊΠ° Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΠΎΠ±ΡΠ°ΡΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°Π·Π½ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ: ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΠΏΠ°Π» Π² ΠΊΠ΅Ρ, ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠΎ Π·Π°Π½ΡΠ»ΠΎ, ΠΈ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π»Π΅Π·ΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠΎ Π·Π°Π½ΡΠ»ΠΎ. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ, ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ, Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ-ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π²Ρ ΠΏΠΎΡΠΎΠΌ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ β ΡΡΠΎ ΠΆΠ΅ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ? ΠΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΆΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. Π£ Π²Π°Ρ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΠΉ Π΄Π΅Π½Ρ, ΡΡΠΎ-ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΡΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π»Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π»ΠΎΠ³Π°Ρ ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ, ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ°, Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ²Π΅.
Π§ΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΠ΅, ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠ°ΡΠ΅?
ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Β«currentTimeMillisΒ» Π½Π΅ Π±ΡΡΡΡΡΠΉ, ΠΈ ΠΌΠ΅ΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΡΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Java-ΠΊΠ»Π°ΡΡ Β«AtomicLongΒ». Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅, Π²Π½ΠΎΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅Π³ΠΎ Π²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ Π²ΡΠ·ΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΊΠ°ΠΆΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π§ΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ? ΠΠ°ΠΌΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΠ΅ΠΌΠ°. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ½Π° Π½Π΅ ΡΠ΅ΡΠ°Π΅ΡΡΡ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π² Java Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Β«systemNanoTimeΒ», ΠΎΠ½ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ, ΠΎΠ½ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ, ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎ-ΡΠΎ Π±ΡΡΡΡΠΎΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Π²ΡΡ ΠΎΠ΄ β ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄, Π΄Π»Ρ x86 ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ rdtsc, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ΅ΡΡΠΈΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΊΡΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠ°ΠΏΡΡΠΌΡΡ ΠΊ Π½Π΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ° Π½Π΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π° C ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Β«rdtscΒ», Π° Π΄Π°Π»ΡΡΠ΅ ΡΠ»ΠΈΠ½ΠΊΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ Java-ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠ· Java. ΠΡΠΎΡ Π²ΡΠ·ΠΎΠ² Π²Π°ΠΌ Π·Π°ΠΉΠΌΠ΅Ρ ΡΡΠΎ ΡΠ°ΠΊΡΠΎΠ², ΠΈ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΡΡΡΡΡ-Π΄ΡΡΠ³ΡΡ ΡΠ°ΠΊΡΠΎΠ², ΡΠΎ ΡΡΠΎ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΈΠ΄Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠ°, ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, Β«ΠΏΠ»ΡΡ-ΠΌΠΈΠ½ΡΡΒ», Β«Π±ΡΡΡΡΠ΅Π΅-ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅Β», ΠΊΠ°ΠΊ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΊΡ.
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΠΊΡΡΠΊΠ°Ρ ΠΊΠΎΠ΄Π°, ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΡΠ΅ΠΌΠΏΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β». ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΡΠ½ΡΡ Π·Π°ΠΌΠ΅ΡΠΎΠ², ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΈ ΡΠ΅Π³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, Π²Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΌΠΎΡΡΠΈΡΠ΅, Π³Π΄Π΅ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ β ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΠΈΠ»ΠΈ ΡΠ°Π· Π² Π΄Π΅ΡΡΡΡ ΡΠ΅ΠΊΡΠ½Π΄. Π‘ΠΌΠΎΡΡΠΈΡΠ΅, Π³Π΄Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΈ ΡΡΠΈΡΠ°Π΅ΡΠ΅, Π² ΠΊΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ Π²Ρ Π·Π°ΡΡΠ°Π΅ΡΠ΅ ΡΠ²ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΠΎ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΅ΡΡΡ ΡΡΡΠΎΡΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½Π° ΡΡΠ°ΡΠΈΡ Π²ΡΠ΅, ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ 90% ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΈΠΊΠ», Π° ΡΠ°ΠΌ, Π² Π³Π»ΡΠ±ΠΈΠ½Π΅, ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΡΡΠΎΡΠΊΠ°, ΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Ρ Π΅Π΅ Π² ΡΡΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ ΠΈ Π·Π°ΡΡΠ°Π½Π΅ΡΠ΅.
Π’Π°ΠΊΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Π³ΠΎΡΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉΒ». ΠΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. Π§ΡΠΎ ΠΊΠ»Π°ΡΡΠ½ΠΎ β Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠΊΠ½ΡΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«thread dumpΒ», ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°ΠΌΠΏ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π Windows ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΠΈΡ CTRL-Break Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, Π° Π½Π° Linux ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ½ΠΈΠΊΡΠ°Ρ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ»ΠΊΠΎΠΉ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°, ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«kill -3Β». Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Java-ΠΌΠ°ΡΠΈΠ½Π° Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΅ΡΡΡ Π³ΠΎΡΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΊΠΎΠ΄Π΅, ΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΠΌ ΠΈ Π·Π°ΡΡΠ°Π½Π΅ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠΏΡΡΡ ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π΅ Π½Π°Π΄ΠΎ Π±Π΅ΠΆΠ°ΡΡ ΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΡ, Π½Π΅ Π½Π°Π΄ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π΅Π»Π°ΡΡ. ΠΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΠΎΡΠΌΠΎΠ·ΠΈΡ, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Ρ ΠΎΡΡ ΠΎΠ΄ΠΈΠ½ thread dump, ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΠ΄Π½ΠΎ Π³ΠΎΡΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ°ΡΠΈΡ Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ, Π²Ρ Π² thread dump ΠΈ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΡ ΡΡΡΠΎΡΠΊΡ, Π² ΡΠ²ΠΎΠ΅ΠΉ Π»ΡΠ±ΠΈΠΌΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ , Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΠΊΠΎΠ΄, ΠΈΠ·ΡΡΠΈΡΠ΅, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ β Π»ΠΈΠ±ΠΎ ΠΎΠ½ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, Π»ΠΈΠ±ΠΎ ΠΎΠ½ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΄Π°Π»ΡΡΠ΅ ΡΠΆΠ΅ ΡΠ°Π·Π±ΠΎΡ ΠΏΠΎΠ»Π΅ΡΠΎΠ², ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π»ΠΈΠ±ΠΎ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π’Π°ΠΊΠΆΠ΅ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Java-ΠΌΠ°ΡΠΈΠ½Π°Ρ Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Β«jstackΒ», Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ thread dump.
Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½ thread dump, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ thread dumpΠΎΠ². ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΡΠ»ΠΎΠ²ΠΈΡ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅ΡΠ΅ Π½Π° ΠΏΠ°ΡΡ-ΡΡΠΎΠΉΠΊΡ. ΠΠΎΠΆΠ΅Ρ Ρ Π²Π°Ρ Π² Π³ΠΎΡΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠ΅ Π½Π΅ ΡΡΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ, Π° 50%. Π‘Π΄Π΅Π»Π°Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ thread dumpΠΎΠ², Π²Ρ ΡΠ²Π½ΠΎ Π² Ρ ΠΎΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ· ΡΡΠΈΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², Π΄ΠΎΡΡΠ°Π½Π΅ΡΠ΅ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΈΠ· Π³ΠΎΡΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΈ, ΠΈ Π³Π»Π°Π·ΠΊΠ°ΠΌΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ΅ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Π²Ρ Π·Π°ΡΡΠ°Π»ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄. ΠΡΡ ΠΈΠ΄Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΠΈΡΡ Π΄Π°Π»ΡΡΠ΅. ΠΠΎΠΆΠ½ΠΎ, Π·Π°ΠΏΡΡΡΠΈΠ² ΡΠ²Π°-ΠΌΠ°ΡΠΈΠ½Ρ, ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π΅Π΅ Π²ΡΡ ΠΎΠ΄ Π² ΡΠ°ΠΉΠ», ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π΅Ρ thread dump ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΡΡΠΈ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π»ΠΈΠ±ΠΎ ΡΠΈΡΠΊΠ° ΡΡΠΎ-ΡΠΎ Ρ Π½Π΅ΠΉ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΌ ΡΠ±ΠΎΡ thread dump Π΄ΠΎΡΡΠΎΡΠ½ΠΎ Π±ΡΡΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΡ ΡΠΈΠ»Ρ 100 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΡΠ΅Π΄ΠΎΠ².
Π Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ²Π΅, ΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ hard real time, ΠΈ Π²Π°ΠΌ ΡΠ°ΠΌ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π΅ Π²Π°ΠΆΠ½Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π²Π°Ρ ΡΠΆΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π’.Π΅. Π²Π°ΠΌ Π»ΠΈΡΠ½Π΅Π΅ Π·Π°ΡΡΠΏΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° ΡΡΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΡ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ.
Π Π΄Π°ΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΉ, ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ, ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ, Ρ Π½ΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΡΠ΄ΠΈ, Π΄Π°, ΡΠ°ΠΌ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π΄Π°, Π΅ΡΡΡ ΡΠΎΠ±ΠΎΡΡ (ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ), Π½ΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π° ΡΡΠΈ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΌΠΎΡΡΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ»ΡΡ-ΠΌΠΈΠ½ΡΡ 100 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ Π² Π³Π»Π°Π·Π° Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡ. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ Π·Π°ΠΌΠ΅ΡΠΈΡ, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΠΌΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π΅ΡΡΠΈ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄, ΡΡΠΎ ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅ΡΠ½Π°Ρ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Π·Π°Π΄Π΅ΡΠΆΠΊΠ°, Π½ΠΎ ΡΡΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ β Π½Π΅Ρ.
ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°ΡΡ ΠΎ Π»ΠΈΡΠ½ΠΈΡ ΡΡΠ° ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , ΠΈ ΡΠ°Π· Π² ΡΡΠΈ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄Π΅Π»Π°ΡΡ thread dump, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Π½Π° ΠΆΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ thread dump, ΡΡΠΎ ΡΠ°ΡΡΡ java-ΠΌΠ°ΡΠΈΠ½Ρ, Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ β Ρ Π·Π° Π²Π΅ΡΡ ΡΠ²ΠΎΠΉ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Π½ΠΈ ΡΠ°Π·Ρ Π½Π΅ Π²ΠΈΠ΄Π΅Π», ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ΄Π΅Π»Π°ΡΡ Π½Π° Java-ΠΌΠ°ΡΠΈΠ½Π΅ thread dump ΡΠ΄Π΅Π»Π°Π»Π° Ρ Π½Π΅ΠΉ ΡΡΠΎ-ΡΠΎ ΠΏΠ»ΠΎΡ ΠΎΠ΅.
Π’.Π΅. ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΆΠΈΠ²ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, ΠΏΠΎΠ»ΡΡΠΈΠ² ΡΠ°ΠΉΠ» thread dump, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π³Π»Π°Π·ΠΊΠ°ΠΌΠΈ, Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ, ΡΡΠΈΡΠ°Π΅Ρ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ β Ρ ΠΎΡΡ Π±Ρ ΡΡΠΏΠΎ, ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΠΏΠΎΡΠΎΠΊΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ Π΅ΡΠ»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠΎΡΡΡΡ Π½Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Java-ΠΌΠ°ΡΠΈΠ½Π° (Β«RUNNABLEΒ»), ΡΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ, Π²Π°ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½ΠΈ ΠΎ ΡΠ΅ΠΌ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ , ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈβ¦ ΡΠ΅ΡΡΡ, ΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ java-ΠΌΠ°ΡΠΈΠ½Π° Π΅Π³ΠΎ ΡΡΠΈΡΠ°Π΅Ρ Β«RUNNABLEΒ», ΠΈ Π²Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ β ΠΊΠ°ΠΊΠΈΠ΅ Ρ Π²Π°Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΆΠ΄ΡΡ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΡΠ΅ΡΠΈ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°ΠΌΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΡΡΠ΅ΠΊΠΈ, β Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ, Π²Ρ-ΡΠΎ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π΅Π»Π°Π΅Ρ, ΡΡΠΎ Π²ΠΎΡ ΡΡΠΎ β Π²ΡΠ·ΠΎΠ² Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π² ΡΡΠ΅ΠΊΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π²ΠΎΡΠ»ΠΈ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π½Π°ΡΡ, ΡΡΠΎ Π²ΠΎΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ CPU Π½Π΅ ΠΆΡΠ΅Ρ, Ρ ΠΎΡΡ java-ΠΌΠ°ΡΠΈΠ½Π° Π΄ΡΠΌΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Β«RUNNABLEΒ». ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, thread dump ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² Java Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄
Thread.getAllStackTraces
ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ stacktrace ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ, Ρ ΡΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ, Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ Java-ΠΌΠ°ΡΠΈΠ½Ρ ΠΏΡΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ thread-dump, ΠΎΠ½Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ, ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ΅ΠΊ, ΠΎΠ½Π° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π°ΠΆΠΎΠΊ, ΡΡΠΎ ΡΠ²Π°-ΠΌΠ°ΡΠΈΠ½Π΅ Π½Π°Π΄ΠΎ Π±Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. Β«ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎΒ» β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρ, Π³Π΄Π΅ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π³Π΄Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Ρ Π½Π΅Π΅ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ , ΠΏΠΎΠ½ΡΡΠ½Π° ΡΠΎΡΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠ»ΠΈ Π±ΡΠ°ΡΡ ΠΊΡΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ², Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ², ΡΠΎ ΡΠ°ΠΌ Β«safe pointΒ» ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΡΠΈΡΠ΅ΠΌ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡΡ Π·Π°ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΡΡΡ hotspot-ΠΎΠΌ, ΠΈ savepoint-ΠΎΠ² ΡΠΎΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
ΠΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² thread dumpe ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΡΡΠΎΡΠΊΡ β ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠΎ Π³ΠΎΡΡΡΠ°Ρ ΡΡΡΠΎΡΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ savepoint ΠΊ Π³ΠΎΡΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠ΅. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΠ΅ Β«CTRL-BREAKΒ», Java Π²ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ Π²ΡΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π°ΠΆΠΎΠΊ Β«ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π½Π° Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ savepointΠ΅Β», ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ, Java-ΠΌΠ°ΡΠΈΠ½Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠ½ΠΈ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅, Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠΈΡΠΈ Java-ΠΌΠ°ΡΠΈΠ½Π°. ΠΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ jmap, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠ³ΠΎ, ΡΠ΅ΠΌ Ρ Π²Π°Ρ Π·Π°Π±ΠΈΡΠ° ΠΏΠ°ΠΌΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ. ΠΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΎΠ±Π·ΠΎΡΠ°, ΡΡΠΎ ΠΆΠ΅ Ρ Π²Π°Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΈ ΡΠ΅ΠΌ Π·Π°Π±ΠΈΡΠ° ΠΏΠ°ΠΌΡΡΡ.
ΠΠΏΡΡΡ ΠΆΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²Ρ ΡΡΠ°Π·Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈ Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΈΡΠ° Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ , Π΄Π°ΠΆΠ΅ ΡΠ΅Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΌΡΡΠΎΡΠ΅.
ΠΠΎΡΡΠΎΠΌΡ Ρ jmap Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΎΠΏΡΠΈΡ Β«liveΒ», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π΅Π»Π°Π΅Ρ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ°, ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΡΠΎΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΡΠΎ ΡΠΆΠ΅ Ρ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ, Π±ΠΎΠ»ΡΡΡΡ, ΠΆΠΈΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ Ρ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°ΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ Ρ Π΄Π΅ΡΡΡΠΊΠΎΠΌ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΄Π΅ΡΡΡΠΎΠΊ-Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΠΊΡΠ½Π΄, ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠΌΠΎβ¦ Π² Π»ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌΠΈ Π»ΡΠ΄ΡΠΌΠΈ, ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΡΡΠ΅ ΡΡΠ΅Ρ
ΡΠ΅ΠΊΡΠ½Π΄ Π½Π΅ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ, ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½Π° Π·Π°Π²ΠΈΡΠ»Π°. ΠΠ΅Π»ΡΠ·Ρ ΠΆΠΈΠ²ΡΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π΄ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅. ΠΠ°ΠΆΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Π° ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ Π·Π°ΠΌΠ΅ΡΠ½Π°, Π½ΠΎ Π΅ΡΠ΅ Π½Π΅ ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠ°, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π½Π° 10 ΡΠ΅ΠΊΡΠ½Π΄ β ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠ°. ΠΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΆΠΈΠ²ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
jmap-ΠΎΠ² ΡΠ΅Ρ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ, ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ, Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΌΡΡΠΎΡ ΡΡΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ.
Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Java-ΠΌΠ°ΡΠΈΠ½. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Java-ΠΌΠ°ΡΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΎΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ thread dump β Β«PrintClassHistogramΒ».
Π―Π²Π°-ΠΌΠ°ΡΠΈΠ½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΏΡΠΈ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΊ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ, Π»ΡΠ΄ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ. ΠΠΈΠΊΡΠΎ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ, Π° Π²ΠΎΡ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ Ρ Π²Π°ΡΠ°ΡΡ, ΠΎΠ½Π° Π²ΡΠ»Π΅ΡΠ°Π΅Ρ, Π½Π°ΡΠΈΠ½Π°ΡΡ Π΄ΡΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ Π±Ρ ΡΠ°ΠΊ ΡΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠΏΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ. Π’ΠΎΠ³Π΄Π° Π² ΠΏΠ»ΠΎΡ ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Java-ΠΌΠ°ΡΠΈΠ½Π° Π²Π°ΠΌ Π·Π°ΠΏΠΈΡΠ΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ Π΄Π°ΠΌΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠΌ, Π½Π΅ Π½Π° ΠΆΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π»ΡΠ±ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ, ΡΡΠΎΡ Π΄Π°ΠΌΠΏ ΠΌΠΎΠΆΠ½ΠΎ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π·ΡΡΡ Ρ Java-ΠΌΠ°ΡΠΈΠ½Ρ, ΡΠ΅ΠΌ ΠΆΠ΅ jmap-ΠΎΠΌ, Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ Β«-dumpΒ», Π½ΠΎ ΡΡΠΎ, ΠΎΠΏΡΡΡ ΠΆΠ΅, ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Java-ΠΌΠ°ΡΠΈΠ½Ρ Π½Π° Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½Π° ΠΆΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²Ρ ΡΡΠΎ Π²ΡΡΠ΄ Π»ΠΈ Π·Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ Π΄Π΅Π»Π°ΡΡ.
Π Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΈΠ· Π·Π°Π»Π°: Π’Π°ΠΌ Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΡΡΠΎ ΡΡΠΎΡ Β«HeapDumpOutOfMemoryΒ» ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΠ΅Ρ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΠΌΡΡΡ ΡΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ.
ΠΠ°, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ. Β«HeapDumpOutOfMemoryΒ» ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΎΠΏΡΠΈΡ, ΠΏΡΠΈΡΠ΅ΠΌ Ρ ΠΎΡΡ ΠΎΠ½Π° Β«-XXΒ», Π½Π΅ Π½Π°Π΄ΠΎ ΡΡΠΈΡ ΠΎΠΏΡΠΈΠΉ Π±ΠΎΡΡΡΡΡ, Ρ ΠΎΡΡ ΡΡΠΎΡ Β«XXΒ» ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π΅Ρ ΠΈΡ ΠΌΠ΅Π³Π°ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΡ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ, ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ production-ΠΎΠΏΡΠΈΠΈ ΡΠ²Π°-ΠΌΠ°ΡΠΈΠ½Ρ, ΠΎΠ½ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠ΅, Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅, ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΆΠΈΠ²ΠΎΠΉ, ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΡΠΎ Π½Π΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ! Π java-ΠΌΠ°ΡΠΈΠ½Π΅ Π΅ΡΡΡ ΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ Π½Π΅ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΡΠ»Π° X-ΠΎΠ².
Π Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΈΠ· Π·Π°Π»Π°: ΠΡΠ° ΠΎΠΏΡΠΈΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π΄Π°ΠΌΠΏΡβ¦
ΠΡ, Π² java-ΠΌΠ°ΡΠΈΠ½Π΅ ΡΠΎΠΆΠ΅ Π±ΡΠ²Π°ΡΡ Π±Π°Π³ΠΈ, Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, β¦ Π±ΡΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Ρ Π½Π΅ Π±ΡΠ΄Ρ Π½Π° ΡΡΠΎΠΌ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ, Ρ Π½Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ°Π»ΠΎ. Π― Ρ ΠΎΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π° ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ΅, Π² ΠΎΡΡΠ°Π²ΡΠ΅Π΅ΡΡ Π²ΡΠ΅ΠΌΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ΄Π½ΠΎ Π΄Π΅Π»ΠΎ β ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΡ Π·Π°Π½ΡΡΠ°, ΠΊΠ°ΠΊ Π²Ρ Π΅Π΅ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π³Π΄Π΅-ΡΠΎ Π² ΠΊΠΎΠ΄Π΅ Π΅ΡΡΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Ρ.Π΅. Π²Ρ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΠ΅, β¦ ΡΡΠΎ-ΡΠΎ Ρ Π½ΠΈΠΌ Π΄Π΅Π»Π°Π΅ΡΠ΅, ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΈ ΠΏΠΎΡΠΎΠΌ Π·Π°Π±ΡΠ²Π°Π΅ΡΠ΅, ΠΎΠ½ ΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΌΡΡΠΎΡ, ΠΈ garbage collector ΠΏΠΎΡΠΎΠΌ Π΅Π³ΠΎ Π·Π°Π±ΠΈΡΠ°Π΅Ρ. Π ΡΠ°ΠΊ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°, Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ Π±Ρ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π»Π° Ρ ΡΡΠΈΠΌ β¦ Π½ΠΎ Π²Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΏΠΎ CPU ΡΡΠΎ ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΌΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π² Java-ΠΌΠ°ΡΠΈΠ½Π΅ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°Π½ΡΠ°ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΡΡΡΠΎ, Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π² Π»ΡΠ±ΠΎΠΌ Π½Π΅-managed ΡΠ·ΡΠΊΠ΅, C/C++, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Java Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΡΡΠΎ Π±Π°Π½Π°Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΡΠ΅. ΠΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π²ΡΠ΅ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. ΠΠ½Π° ΡΠΆΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΡΠ»Π΅Π½Π°, Π²ΡΠ΅ ΡΠΆΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΎ. ΠΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ Π³ΠΎΡΡΡΠΈΡ ΡΠΎΡΠ΅ΠΊ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ β ΠΎΠ½ΠΎ Π½Π΅ Π²ΡΡΠ²Π΅ΡΠΈΡΡΡ Ρ Π²Π°Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π°, Π½ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ thread dumpe, Π½ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅, ΡΡΠΎ ΡΡΠΎ Ρ Π²Π°Ρ Π³ΠΎΡΡΡΠ°Ρ ΡΠΎΡΠΊΠ°. Π₯ΠΎΡΡ Ρ Π²Π°Ρ ΡΡΠΎ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΆΡΠ°ΡΡ Π²Π°ΡΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΏΠΎΡΠ΅ΠΌΡ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΡΠΎΠΌ, ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎΡ ΠΌΡΡΠΎΡ ΡΠΎΠ±ΡΠ°ΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΠΌΠΎΡΡΠΈΡΠ΅, Π½Π° ΡΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡ Π½Π° ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ°.
ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΎΠΏΡΠΈΡ Β«-verbose:gcΒ», Β«+PrintGCΒ», Β«+PrintGCDetailsΒ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ°. ΠΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π½Π° ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΡΡ ΠΎΠ΄ΠΈΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π½Π°ΡΠΈΡ Π²Ρ Π³Π΄Π΅-ΡΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π²Ρ ΡΡΠΎ ΠΌΠ΅ΡΡΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅, Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ, ΠΊΡΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ. ΠΠ°ΠΊ ΠΈΡΠΊΠ°ΡΡ? ΠΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² Java-ΠΌΠ°ΡΠΈΠ½Ρ ΡΠΏΠΎΡΠΎΠ±, ΠΊΠ»ΡΡΠΈΠΊ Β«-XaprofΒ». ΠΠ½ Π²Π°ΠΌ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ allocation profile, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π΅ ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ, Π° ΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² β ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ Π²ΡΠ΄Π΅Π»ΡΠ»ΠΈΡΡ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π²Ρ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π³Π΄Π΅-ΡΠΎ Π·Π°Π²Π΅Π΄Π΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΡΠ°Π·Ρ ΡΠ΄Π΅Π»Π°ΡΡ Β«aprofΒ» β ΠΌΠΎΠΆΠ΅Ρ Π²Ρ ΡΡΠ°Π·Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ Π½Π΅ ΡΠ°ΠΊΡ. ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΡΠΎ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² character-ΠΎΠ², ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ string-ΠΎΠ², ΠΈΠ»ΠΈ ΡΠ΅Π³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, ΠΈ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ Π³Π΄Π΅.
ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Ρ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΡ β Π³Π΄Π΅. ΠΠΎΠΆΠ΅Ρ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π½Π΅Π΄Π°Π²Π½Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π²Π½Π΅ΡΡΠΈ. Π ΠΊΠΎΠ½ΡΠ΅-ΠΊΠΎΠ½ΡΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π³Π΄Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡ ΠΆΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² atomiΡ longΠ°Ρ , ΠΏΠΎΡΡΠΈΡΠ°ΠΉΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ β ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ, ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ° Π²Ρ ΡΠ°ΠΌΠΈ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½Π°ΠΉΡΠΈ.
Π ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΈΠ΄Π΅ΠΈ, Π³Π΄Π΅ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ? ΠΡ Π½Π°Π΄ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ±ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π²ΡΡΠ΄Ρ, ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ°ΠΌ, Π³Π΄Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΠ»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° Π·Π°Π΄Π°Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π°ΡΠΏΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΏΡΡΠΌΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ.
Π― ΡΠ΅ΠΉΡΠ°Ρ Π·Π° ΠΎΡΡΠ°Π²ΡΠ΅Π΅ΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΡΠΈΠΏΠ° Β«Π²ΠΎΡ Ρ Ρ ΠΎΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ°Ρ , Π³Π΄Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ², ΠΏΠΎΡΡΠΈΡΠ°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² int-ΠΎΠ² Π²ΡΠ΄Π΅Π»ΡΡΒ». Π’.Π΅. Ρ Π²ΠΈΠΆΡ, ΡΡΠΎ ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ, Π½ΠΎ Ρ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΡ Π½Π°ΠΉΡΠΈ Π³Π΄Π΅. ΠΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ΡΠΈΡΡ, ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π΅ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅, Π² ΠΊΠΎΠ΄ Π²Π½ΠΎΡΠΈΡΡ, ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ, ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ. ΠΡΠ»ΠΈ Π² Π½Π°ΡΠ°Π»Π΅ Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°, ΡΠΎ Π±ΡΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΅ΡΠΈΡΡ, ΠΈ ΡΡΠΎΠ±Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΡΠΎΠΊ Π½Π΅ ΠΎΡΡΠ°Π»ΠΎΡΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊΠ°Ρ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°, ΠΊΠ°ΠΊ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΡΠΈΡΠ΅ΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΊΠ°ΠΊ Ρ ΠΏΠΎΡΡΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ Π²ΡΠΊΠ»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊ ΠΈ Π½Π° Π»Π΅ΡΡ, Ρ ΠΊΠΎΠ΄ΠΎΠΌ. Π‘Π°ΠΌΡΠΉ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π·Π½Π°Ρ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠΊΡ ASM, ObjectWebΠΎΠ²ΡΠΊΡΡ. ΠΡΠΎ open-source Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠ΅ΠΉ Π±Π°ΠΉΡΠΊΠΎΠ΄ΠΎΠΌ, ΠΈ ΠΎΠ½Π° ΡΠ°Π½ΡΠ°ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΡΡΡΠ°Ρ β ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Π»Π΅ΡΡ, Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΡ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ASM ΡΡΡΡΠΎΠ΅Π½ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ class-reader, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΡΠ°Π΅Ρ .class-ΡΠ°ΠΉΠ»Ρ, ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅Ρ Π±Π°ΠΉΡΠΈΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π±Π»ΠΎΠ½ Visitor, Π² Π½Π°Π±ΠΎΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π²ΠΈΠ΄Π° Β«Ρ Π²ΠΈΠΆΡ ΠΌΠ΅ΡΠΎΠ΄Β», Β«Ρ Π²ΠΈΠΆΡ ΠΏΠΎΠ»Π΅ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ ΠΏΠΎΠ»ΡΠΌΠΈ Π² ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅Β» ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΠΈΠ΄ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠ½ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Β«MethodVisitorΒ» ΡΠΎΠΎΠ±ΡΠ°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ½ ΡΠ°ΠΌ Π²ΠΈΠ΄ΠΈΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄.
Π ΠΏΠΎΡΠΎΠΌ Π΅ΡΡΡ, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΊΠ°, ΠΊΠ°ΠΊ Β«ClassWriterΒ», ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² Π±Π°ΠΉΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ΅Π½ ΡΠ²Π°-ΠΌΠ°ΡΠΈΠ½Π΅. Π§ΡΠΎΠ±Ρ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ASM-Π°, ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ Π²ΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²β¦ Π²-ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠΎΡΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠ»Π°ΡΡ-Π°Π΄Π°ΠΏΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΠΎΠ³Π΄Π° Π΅ΠΌΡ Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ Π²ΠΈΠ΄Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Π΅Ρ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄-visitor, ΡΡΠΎΠ±Ρ ΠΎΡΠ·Π½Π°ΡΡ, ΡΡΠΎ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
Π ΠΊΠΎΠ³Π΄Π° Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π΅ΠΌΡ Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ Π²ΠΎΡ, Π΅ΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° (Β«NEWARRAYΒ»), ΡΠΎ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ β¦ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π±Π°ΠΉΡΠΊΠΎΠ΄Ρ Π² Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈ Π²ΡΠ΅. Π Π²Ρ ΠΎΡΡΠ»Π΅Π΄ΠΈΠ»ΠΈ Π²ΡΠ΅ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Ρ Π²Π°Ρ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄. ΠΠ°Π»ΡΡΠ΅ β ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π΅Π»Π°ΡΡ Π½Π° Π»Π΅ΡΡ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² β ΡΠΎ ΡΡΠΎ Π»Π΅Π³ΠΊΠΎ β Π²Ρ ΠΊΠ°ΠΊ Π±Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΡΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΈ Π²ΡΠ΅.
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π° Π»Π΅ΡΡ, ΡΠΎ Π² java-ΠΌΠ°ΡΠΈΠ½Π΅ Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠΏΡΠΈΡ β javaagent. ΠΡ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ jar-ΡΠ°ΠΉΠ», Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΠΎΠΏΡΠΈΡ Β«Premain-ClassΒ», ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΠ°ΠΌ ΠΈΠΌΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΡΠΎΠΌ β¦ ΠΌΠ΅ΡΠΎΠ΄ Β«premainΒ» ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ, Π²Ρ Π΅ΡΠ΅ Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, c main-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° interface instrumentation. ΠΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ, ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ, Π½Π° Π»Π΅ΡΡ, ΠΌΠ΅Π½ΡΡΡ ΠΊΠ»Π°ΡΡΡ Π² java-ΠΌΠ°ΡΠΈΠ½Π΅. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ class-file ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Java-ΠΌΠ°ΡΠΈΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ»Π°ΡΡΠ°.
Π Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡΡ. Π’.Π΅. Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π»Π΅ΠΆΠ°Ρ, Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ObjectWebASM, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ, ΠΌΠ΅Π½ΡΡΡ, ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡΡ ΠΈΡ Π½Π° Π»Π΅ΡΡβ¦ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ. Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π·Π°Π΄Π°Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π»Π°Π΄Π΅ΡΡ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, Π·Π½Π°ΡΡ ΠΎΠΏΡΠΈΠΈ ΡΠ²Π°-ΠΌΠ°ΡΠΈΠ½Ρ, ΠΈ Π·Π½Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΠ½ΡΠ΅ ΡΠ²Π°-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΎΡ ΠΆΠ΅ javalang-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΠΈΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΠ΅ΡΡ. ΠΡ Π·Π° Π΄Π΅ΡΡΡΡ Π»Π΅Ρ Ρ ΡΠ΅Π±Ρ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΌΠΎΡΠΎΡΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π½Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ΅ΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ Π½Π°Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΠ°Π·Π²Π΅ΡΠΈΡΡΡΠΉ, Π½ΠΎ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΡΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ thread dump, ΠΈ Π²ΡΠ΄Π°Π΅Ρ ΠΏΠΎ Π½ΠΈΠΌ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ, ΡΡΠΎ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΡΡΠ°Ρ ΡΡΠΈΠ»ΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ Π½Π°Π·Π²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠ»Π°ΡΡΠΈΠΊ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΈ Π²ΡΠ΄Π°Π΅Ρ Π΅Π΅ Π² ΠΊΡΠ°ΡΠΈΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠΈΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ Π² production ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, ΠΏΡΠΎΡΡΠΎ thread dump, ΠΈ Π²ΡΠ΅β¦
Π ΠΊΠΎΠ½ΡΠ°Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΡΡ ΠΆΠ΅, ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ, Π΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ, Π³Π΄Π΅ ΠΈ ΡΡΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ, ΠΏΡΠΈΡΠ΅ΠΌ Π΄Π΅Π»Π°Π΅Ρ ΠΎΠ½ ΡΡΠΎ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ Π·Π°ΠΌΠ΅Π΄Π»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΈΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅, ΡΠ°ΠΊ ΠΈ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ ΡΠΌΠ΅ΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ, ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ. ΠΠ½ΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΡΠ·Π½Π°ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Ρ ΠΏΠΎΠ»Π½ΡΠΌ stack-trace’ΠΎΠΌ. ΠΡΠΎ Π΄ΠΎΠ»Π³ΠΎ, ΡΡΠΎ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ. ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ΅ΠΌΠΏΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ΅ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ±ΠΈΡΠ°ΡΡ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠ»ΡΡΠ°Ρ Π½Π΅ Π²ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ΄ΡΡ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ²ΠΎΠΈ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΎΠ½ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ²ΠΎΠΈ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π±ΡΠ΄ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ (ΠΎΡΠ²Π΅ΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ Ρ 30:06).
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ-ΡΡΠ΅Π½ΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ application developer days, ΡΠΊΠ°ΡΠ°ΡΡ Π²ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ ΡΠΎΡΡΠ΅Π½ΡΠ°ΠΌΠΈ ([2011], [2010]) ΠΈΠ»ΠΈ Π²ΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΏΠΎ http.
Disclaimer Π΅ΡΠ΅ ΡΠ°Π·: Π― Π½Π΅ Π°Π²ΡΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄Π°. Π― ΠΏΡΠ΅Π΄ΡΠ΅Π΄Π°ΡΠ΅Π»Ρ ΠΠ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, Π²ΠΈΠ΄Π΅ΠΎ-ΠΌΠΎΠ½ΡΠ°ΠΆΠ΅Ρ, ΠΈ ΡΠΎΡΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΡΡΠ΅Π½ΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π£ Π°Π²ΡΠΎΡΠ° Π½Π΅Ρ Ρ
Π°Π±ΡΠ°Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠ½Π΅ ΡΠ΄Π°ΡΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΈΠ³Π»Π°ΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΊ Π²Π°ΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ.ΠΠ²ΡΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄Π° elizarov ΠΏΡΠΈΠ·Π²Π°Π½ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ.Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² ΠΆΡΡΠ½Π°Π»Π΅ Π°Π²ΡΠΎΡΠ°.
BTW, elizarov Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ADD-2012 Ρ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ Β«ΠΠΈΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ Ρ ΡΡ Π΄Π»Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Β».
ΠΡΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ²… ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Java, ΡΠ°ΡΡΡ 1
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Java Ρ ΠΏΠΎΠΌΠΎΡΡΡ JConsole ΠΈ VisualVM
Π’Π΅Π΄ ΠΡΡΠ²ΠΎΡΠ΄
ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ 19.10.2012
ΠΠ± ΡΡΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΡΡΠ°ΡΠ΅ΠΉ
ΠΡ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ Π·Π½Π°Π΅ΡΠ΅ ΠΎ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ΅? ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΠ΅Π±Π΅Ρ ΠΏΠΎ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, ΠΈΠ·ΡΡΠΈΠ² Π΅Π΅ Π»ΠΈΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. Π ΡΡΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΡΡΠ°ΡΠ΅ΠΉ Π’Π΅Π΄ ΠΡΡΠ°ΡΠ΄ ΡΠ³Π»ΡΠ±Π»ΡΠ΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, Π²ΡΡΠ²Π»ΡΡ ΠΌΠ°Π»ΠΎΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΠ°ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΌΡΡ Π·Π°ΠΊΠΎΠ²ΡΡΠΈΡΡΡΡ Π·Π°Π΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» (in English)
ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π²ΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΏΠ°Π½ΠΈΠΊΡ, ΠΈ ΡΠΎΠΌΡ Π΅ΡΡΡ Π²Π΅ΡΠΊΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π°. ΠΠΎΠΈΡΠΊ ΠΏΡΠΈΡΠΈΠ½ ΡΠ·ΠΊΠΈΡ ΠΌΠ΅ΡΡ Π² Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ»ΠΎ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΡΡ β ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Java ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° «ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠΊΠ°», ΡΠ°ΠΊ ΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Java ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°Π²Π°Π»ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ JConsole Π² Java 5 Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ. JConsole β ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Java, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π² GUI-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅. ΠΠ½ Π½Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½, Π½ΠΎ ΡΠ»ΡΠΆΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΠΎΠ±ΠΎΡΠΎΠ½Ρ, ΠΊΠΎΠ³Π΄Π° Π±ΠΎΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π°ΠΌ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ β ΠΈ ΡΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ Google.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΈΠ· ΡΠΈΠΊΠ»Π° 5 ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ²β¦ Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡ ΠΏΡΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° JConsole (ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΡΠ°ΡΠ° VisualVM) Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ·ΠΊΠΈΡ ΠΌΠ΅ΡΡ Π² ΠΊΠΎΠ΄Π΅ Java.
1. JDK ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠΌ
ΠΠ½ΠΎΠ³ΠΈΠ΅ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π΅ Π·Π½Π°ΡΡ, ΡΡΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Java 5, Π² JDK Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. JConsole (ΠΈΠ»ΠΈ, Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, VisualVM) β ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ, Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Java. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ jconsole
ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ JDK Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH
. Π GUI-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ JDK, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ bin ΠΈ Π΄Π²Π°ΠΆΠ΄Ρ ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π½Π° jconsole.
ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡ (Π²ΡΠ΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ Java ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄ΡΡΠ³ΠΈΡ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ), ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ URL-Π°Π΄ΡΠ΅ΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ, ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Java β ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ JConsole.
JConsole ΠΈΠ»ΠΈ VisualVM?
JConsole Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠΏΡΡΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Java 5. VisualVM β ΡΡΠΎ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ NetBeans, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π³Π΄Π΅-ΡΠΎ Π² Java 6 update 12. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ Π΅ΡΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π° Java 6 Π΅ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° JConsole. ΠΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΎΠ²Π΅ΡΠΎΠ² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΎΠ±ΠΎΠΈΡ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠ². ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. VisualVM Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Java 6, Π½ΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. Π‘ΠΌ. ΡΠ°Π·Π΄Π΅Π» Π Π΅ΡΡΡΡΡ.)
Π Π°Π±ΠΎΡΠ° Ρ JConsole
Π Java 5 Java-ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ -Dcom.sun.management.jmxremote
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΠ Java 5, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ ΠΌΠΎΠ³ ΠΈΡ
Π½Π°ΠΉΡΠΈ. ΠΠΎΠ³Π΄Π° JConsole ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ ΡΠ΅Π»ΠΊΠ½ΡΡΡ Π½Π° Π½Π΅ΠΌ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΠΎΡΠ°ΠΉΠ»Π΅ΡΡ Π²Π½ΠΎΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΈΡ
. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ JConsole — ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠΌ, ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΡΠ°Π·Π½ΠΈΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. (ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ, ΠΌΠΎΠΉ Π»ΡΠ±ΠΈΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ — SwingSet2, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ JDK). Π― ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π·Π°ΠΏΡΡΡΠΈΡΡ SwingSet2 Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ -verbose:gc
, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΈΠΊΠ»Ρ ΡΠ±ΠΎΡΠ° ΠΌΡΡΠΎΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΠ» ΡΠΎ ΠΆΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΊ Π½Π΅ΠΌΡ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠΌ JConsole. Π‘ JConsole Π½Π°Π±Π»ΡΠ΄Π°Π»Π°ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠΊΠ»ΠΎΠ² GC, ΠΊΠΎΡΠΎΡΠΎΠΉ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ Π±ΡΠ»ΠΎ. ΠΡΠΎ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ°.
2. ΠΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ
ΠΡΠΎΡΠ°ΠΉΠ»Π΅ΡΡ Web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ ΡΠ²ΡΠ·Ρ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΡΡΠΎΠ±Ρ JConsole (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ JVMTI) ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°Π»/ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π» ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Tomcat ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ webserver, ΠΈ JMX Π½Π° ΡΡΠΎΠΉ JVM Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΈ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡ 9004, ΡΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ JConsole (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ JMX-ΠΊΠ»ΠΈΠ΅Π½Ρ), Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ URL-Π°Π΄ΡΠ΅Ρ JMX service:jmx:rmi:///jndi/rmi://webserver:9004/jmxrmi.
ΠΠΎ ΡΡΡΠΈ, Π²ΡΠ΅, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅Π½ΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ , β ΡΡΠΎ URL-Π°Π΄ΡΠ΅Ρ JMX. (ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JMX ΠΈ JConsole ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π Π΅ΡΡΡΡΡ.)
3. ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ
ΠΠ΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄
ΠΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π°Π³ΠΈΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, Π½ΠΎ Π²ΡΠ΅ ΡΡΠΈ ΡΠ΅Π°ΠΊΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡ. Π’Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΡΡ
Π΄Π½Π΅ΠΉ Java, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π·Π°ΠΏΡΡΡΡΡ ΡΡΠ°ΡΡΡ IDE ΠΈ Π½Π°ΡΠ½ΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°ΡΡΠΈ Π±Π°Π·Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ
Π·Π½Π°ΠΊΠΎΠΌΡΡ
«ΠΊΡΠ°ΡΠ½ΡΡ
ΡΠ»Π°ΠΆΠΊΠΎΠ²», ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Ρ.ΠΏ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΡΡΠ°ΠΆΠ΅ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΠΏΠ΅ΡΡ Π½Π°Π΄ ΡΠ»Π°Π³Π°ΠΌΠΈ -X
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ JVM, Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°. Π Π½ΠΎΠ²ΠΈΡΠΊΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΠΎΠΉΠ΄ΡΡ ΠΏΡΡΠΌΠΎ Π² Google Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΆΠ΅ Π½Π°ΡΠ΅Π» ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Β«ΡΡΠΊΠΎΡΠΈΡΠ΅Π»ΡΒ» JVM, ΠΈ ΠΈΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄.
ΠΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π²ΡΠ΅ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°ΡΠ³Π°Π΄. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ°, Π° ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΡΡΡΠΎΠ΅Π½ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, ΠΎΡΠΊΠ°Π·Ρ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΈΡ!
Π JConsole Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ, ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅:
- Memory: Π΄Π»Ρ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π·Π° ΡΠ°Π±ΠΎΡΠΎΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΡΡ Π² ΡΠ±ΠΎΡΡΠΈΠΊΠ΅ ΠΌΡΡΠΎΡΠ° JVM;
- Threads: Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ JVM;
- Classes: Π΄Π»Ρ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π·Π° ΠΎΠ±ΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΠ.
ΠΡΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ (ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ) ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ JMX, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΠ Java 5 ΠΈ Π²ΡΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ Π² JMX-ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌ Π² JVM. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π² ΡΠΎΡΡΠ°Π²Π΅ Π΄Π°Π½Π½ΠΎΠΉ JVM ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ MBeans Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. (ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° JConsole.)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ Tomcat «ΡΠΎΡΠΌΠΎΠ·ΠΈΡ» ΠΈΠ·-Π·Π° ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠΈΠΏΠ° OutOfMemoryError
. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ JConsole, ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Classes ΠΈ ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠ»ΠΈ ΠΈΡ
ΡΠΈΡΠ»ΠΎ Π½Π΅ΡΠΊΠ»ΠΎΠ½Π½ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π³Π΄Π΅-ΡΠΎ Π² ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π΅ΡΡΡ ΡΡΠ΅ΡΠΊΠ° ClassLoader
, ΠΈ Π² ΡΠΊΠΎΡΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ PermGen
Π±ΡΠ΄Π΅Ρ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΎ. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ Memory.
4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°ΠΌΠΏΠ° ΠΊΡΡΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
Π ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ, ΠΈ Π½Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠΌ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΠ΅Π΄Ρ Java ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² JConsole, Π° Π΅ΡΠ΅ Π»ΡΡΡΠ΅ β Π² VisualVM.
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ MBeans, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΠΊΡΡΡΡ ΡΠ·Π΅Π» com.sun.management
, Π° Π·Π°ΡΠ΅ΠΌ HotSpotDiagnostic
. ΠΡΠ±Π΅ΡΠΈΡΠ΅ Operations
, ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ dumpHeap Π½Π° ΠΏΡΠ°Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ. ΠΡΠ»ΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° (String) ΡΠΊΠ°Π·Π°ΡΡ dumpHeap ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ Π΄Π°ΠΌΠΏΠ°, ΠΎΠ½ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²ΡΠ΅ΠΉ ΠΊΡΡΠΈ JVM ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ Π΅Π³ΠΎ Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
ΠΠΎΠ·Π΄Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ VisualVM β Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ½ΠΈΠΌΠΊΠ°. (ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ VisualVM ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² Java 6, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ).
5. JConsole β Π½Π΅ ΠΏΡΠ΅Π΄Π΅Π» ΠΌΠ΅ΡΡΠ°Π½ΠΈΠΉ
ΠΡΠΎΡΠ°ΠΉΠ»Π΅Ρ JConsole Ρ ΠΎΡΠΎΡ, Π½ΠΎ Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΡΡΠ΅. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π°Π½Π½ΡΡ , ΡΠ΅ΠΌ JConsole.
Π JConsole Ρ ΠΎΡΠΎΡΠΎ ΡΠΎ, ΡΡΠΎ Π²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Β«ΡΡΠ°ΡΠΎΠΌ Π΄ΠΎΠ±ΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ JavaΒ»: ΡΠ°ΠΊΡΡ ΡΡΠΈΠ»ΠΈΡΡ ΠΌΠΎΠ³ Π±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ. Π JDK Π΄Π°ΠΆΠ΅ Π²Ρ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ JConsole, ΡΠΎΠ·Π΄Π°Π² Π½ΠΎΠ²ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Π½Π΅Π³ΠΎ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» Π Π΅ΡΡΡΡΡ). Π VisualVM, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌ ΠΏΠΎΠ²Π΅ΡΡ NetBeans, ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈΠ΄Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π΄Π°Π»ΡΡΠ΅.
ΠΡΠ»ΠΈ JConsole (Π° ΡΠ°ΠΊΠΆΠ΅ VisualVM ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ) β ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΠΈΠ»ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΈΡΠ΅ΡΠ΅, ΠΈΠ»ΠΈ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ Ρ ΠΎΡΠ΅ΡΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ. Π Π΅ΡΠ»ΠΈ Java-ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ, Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ Groovy, JRuby ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π΄Π΅ΡΡΡΠΊΠ° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² JVM, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±ΡΡΡΡΠ΅Π΅.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· JMX, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠ΅ Π²Π°Ρ Π΄Π°Π½Π½ΡΠ΅, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Java Π½Π΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° JConsole ΠΈΠ»ΠΈ VisualVM β Π² JDK ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅Ρ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ «Π½Π°ΡΡΡΡ» Π±ΠΎΠ»ΡΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠ½ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π΅Π΅ ΠΈ Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΌΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π Π΅ΡΡΡΡΡ Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ
ΠΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΠ΅ΠΌΡ
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Java ΠΏΠΎΠ΄ Linux / ΠΠ»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JUG Ru Group / Π₯Π°Π±Ρ
ΠΡΡΡΠ΅Ρ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΡΡΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΎΠ³ΠΎΠ½Ρ, Π²ΠΎΠ΄Ρ ΠΈ ΡΠΎ, ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ Π΅ΡΡΡ ΠΈ Π΅ΡΡ ΠΊΠΎΠ΅-ΡΡΠΎ! ΠΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Ρ Π‘Π°ΡΠ΅ΠΉ goldshtn ΠΠΎΠ»ΡΠ΄ΡΡΠ΅ΠΉΠ½ΠΎΠΌ ΠΎ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΅. ΠΡ ΡΠΆΠ΅ Π±ΡΠ°Π»ΠΈ Ρ Π‘Π°ΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ ΠΏΠ΅ΡΠ΅Π΄ JPoint 2017, Π½ΠΎ ΡΠΎΠ³Π΄Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ ΠΊΠ°ΡΠ°Π»ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ BPF, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠ» ΠΏΠΎΡΠ²ΡΡΠ΅Π½ Π΄ΠΎΠΊΠ»Π°Π΄ Π‘Π°ΡΠΈ.
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΊΠΎΠΏΠ½ΡΡΡ Π³Π»ΡΠ±ΠΆΠ΅ ΠΈ ΡΠ·Π½Π°ΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π‘ ΡΠ΅Π³ΠΎ ΡΡΠΎΠΈΡ Π½Π°ΡΠΈΠ½Π°ΡΡ
β Π ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π· ΠΌΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΏΡΠΎ BPF ΠΈ Π²ΡΠΊΠΎΠ»ΡΠ·Ρ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Java ΠΏΠΎΠ΄ Linux. Π ΡΡΠΎΡ ΡΠ°Π· Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅, Π° Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ ΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΠ΅ΡΠ²ΡΠΉ Π²ΠΎΠΏΡΠΎΡ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±Π°Π½Π°Π»ΡΠ½ΡΠΉ, β ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? Π‘Π»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ Π΄ΡΠΌΠ°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΆΠ°Π»ΡΠ΅ΡΡΡ?
Π‘Π°ΡΠ° ΠΠΎΠ»ΡΠ΄ΡΡΠ΅ΠΉΠ½: ΠΡΠ»ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΆΠ°Π»ΡΡΡΡΡ, Ρ Π²Π°ΠΌΠΈ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π½Π΅Π΄ΠΎΠ»Π³ΠΎ. ΠΠ»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ β ΡΡΠΎ ΡΡΠ°Π±Π»ΡΡΡΠΈΠ½Π³ ΠΈ crisis mode. Π’Π΅Π»Π΅ΡΠΎΠ½Ρ Π·Π²ΠΎΠ½ΡΡ, ΡΠ²Π΅Ρ ΠΌΠΈΠ³Π°Π΅Ρ, ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΠ°Π»Π°, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π³ΠΎΡΠΈΡ β ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΡΠ΄ΠΎΠ²ΡΠΉ Π±ΡΠ΄Π½ΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½Ρ-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°. Π ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΆΠ΅ ΠΎΠ½ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠ»Π°Π½ΠΈΡΡΡ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΡ, ΠΌΠΎΠ½ΠΈΡΠΎΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Ρ ΠΊΡΠΈΠ·ΠΈΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, capacity planning β ΠΎΡΠ΅Π½ΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ²; ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ·ΠΊΠΈΡ ΠΌΠ΅ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π² Π½Π°Π³ΡΡΠ·ΠΊΠ΅; ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΊΠΎΠΏΠ°ΡΡΡΡ Π²ΡΠ»Π΅ΠΏΡΡ; Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ Π²Ρ ΡΠΎΡΠ½ΠΎ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π½Π°ΡΡ ΠΎ Π»ΡΠ±ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ , ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΅ΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π°ΡΠ½ΡΡ ΠΆΠ°Π»ΠΎΠ²Π°ΡΡΡΡ; Π½Ρ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ Π±ΡΠ΄ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΠ΅ ΠΊΡΠΈΠ·ΠΈΡΡ, ΡΠ΅ΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ΄ΡΡΡΡ Π² ΡΡΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ .
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠ»Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ, Π½ΠΎ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ. ΠΡΠΈΠ²Π΅Π΄Ρ ΠΏΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²: capacity planning Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ Π½Π° Π±ΡΠΌΠ°ΠΆΠΊΠ΅ Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅; ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ APM-ΡΠ΅ΡΠ΅Π½ΠΈΡ (ΠΊΠ°ΠΊ New Relic ΠΈΠ»ΠΈ Plumbr) Π΄Π»Ρ end-to-end ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, AB ΠΈ JMeter Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΊΠ½ΠΈΠ³Ρ ΠΡΠ΅Π½Π΄Π°Π½Π° ΠΡΠ΅Π³Π³Π° Β«Systems PerformanceΒ» β ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΡΠ΅ΠΌΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ°, Π° Β«Site Reliability EngineeringΒ» ΠΎΡ Google ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ (Service Level Objectives) ΠΈ ΠΈΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°.
β ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΅ΡΡΡ: Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ? ΠΠ½Π΅ ΡΠ°ΡΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½Ρ-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ) ΡΡΠ°Π·Ρ Π³ΠΎΡΠΎΠ²Ρ ΡΠ°ΡΡΠ΅Ρ Π»ΡΡΡ JMH, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π²ΡΡ Π½Π° unsafe ΠΈ Β«Ρ Π°ΠΊΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡΒ». ΠΠΎΡΠΎΠΌ ΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. ΠΠΎ Π²Π΅Π΄Ρ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ Π»ΡΡΡΠ΅ Π½Π΅ Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ?
Π‘Π°ΡΠ° ΠΠΎΠ»ΡΠ΄ΡΡΠ΅ΠΉΠ½: ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, ΠΏΠΎΠΌΠ΅Π½ΡΠ² ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Β«Ρ Π°ΠΊΠ½ΡΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡΒ». ΠΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΏΡΠΎΠ΄Π΅, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΌΠΎΠ΅Π³ΠΎ ΠΎΠΏΡΡΠ°, ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π½Π΅ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈΡΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, Π²ΡΠ·Π²Π°Π½Ρ ΠΌΠ΅Π½ΡΡΡΠΈΠΌΠΈΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΠ·ΠΊΠΈΠΌΠΈ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π²Π½Π΅ ΠΊΠΎΠ΄Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Π»ΠΈΡΡ ΠΌΠ°Π»ΡΡ ΡΠ°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠΈΠΊΡΠΎΠ±Π΅Π½ΡΠΌΠ°ΡΠΊΠ°ΡΡ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Β«ΡΠΌΠ½ΡΠΌΠΈΒ» Ρ Π°ΠΊΠ°ΠΌΠΈ.
ΠΠΎΡ ΠΏΠ°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ:
- ΠΠ°ΡΡ Π»Π΅Ρ Π½Π°Π·Π°Π΄ Datadog ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠ°Π²ΠΊΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² PostgreSQL ΡΠΊΠ°ΠΊΠ°Π»ΠΈ ΠΎΡ 50 ΠΌΡ Π΄ΠΎ 800 ΠΌΡ. ΠΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ AWS EBS Ρ SSD. Π§ΡΠΎ ΡΡΠΎ Π΄Π°Π»ΠΎ? ΠΠΌΠ΅ΡΡΠΎ ΡΡΠ½ΠΈΠ½Π³Π° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ½ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ Π²ΠΎ Π²ΡΡΠΌ ΡΡΠΎΡΡΠ»ΠΈΠ½Π³ EBS: Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΊΠ²ΠΎΡΠ° ΠΏΠΎ IOPS, Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΏΠΎΠΏΠ°Π΄ΡΡΠ΅ ΠΏΠΎΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
- ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ ΡΠΊΠ°ΡΠΊΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠΊΠ»ΠΈΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ ΡΠ±ΠΎΡΠ° ΠΌΡΡΠΎΡΠ°. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ 5 ΡΠ΅ΠΊΡΠ½Π΄ (ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ»ΠΈΡΡ ΠΎΠ½ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π±Π΅ΡΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π²ΡΡ ΠΎΠ΄ΠΈΠ»Π° ΠΈΠ·-ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠΈΠ² ΡΠΈΡΡΠ΅ΠΌΡ, ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΆΠ΅ Ρ ΡΡΠ½ΠΈΠ½Π³ΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° Π²ΡΡ Π±ΡΠ»ΠΎ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅; ΠΈΠ·-Π·Π° ΡΠΊΠ°ΡΠΊΠ° Π² ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ²ΡΡΠΈΠ»ΠΎΡΡ ΠΈ Π²ΡΠ·Π²Π°Π»ΠΎ ΡΠ²ΠΎΠΏΠΈΠ½Π³, ΡΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π³ΡΠ±ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π»ΡΠ±ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° (Π΅ΡΠ»ΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΈ ΠΎΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠΌΠ΅ΡΠ°ΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, β ΡΡΠΎ ΠΊΠΎΠ½Π΅Ρ).
- ΠΠ°ΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² Π½Π°Π·Π°Π΄ Sysdig ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°: Π½Π°Ρ ΠΎΠ΄ΡΡΡ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π₯, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Y, Π±ΡΠ»ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΄Π»Ρ ΠΎΠ±ΠΎΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π±ΡΠ»ΠΈ ΠΎΡΠ΅Π½Ρ Π½ΠΈΠ·ΠΊΠΈΠΌΠΈ. ΠΠΎΡΠ»Π΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ½ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ ΠΊΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΡΠ΄ΡΠ° ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Π»ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π₯, ΡΡΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π»ΠΎ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅. ΠΠΏΡΡΡ-ΡΠ°ΠΊΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±Ρ Π½Π΅ ΡΠ΅ΡΠΈΠ»ΠΈ.
Π― ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΡΠ°ΡΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° Π²Π΅ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡ ΠΌΠΎΠΆΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π°ΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π§ΠΈΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ Π·Π½Π°Π½ΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΡΡΠ΅Π΄Ρ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ Β«ΠΊΡΡΡΠ΅Β» Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΡΠ»ΡΡΡΡΠ°Ρ . ΠΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΡΠΎΠΌΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ β Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
β ΠΠ°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΡΠ΅ΡΠ²ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅. ΠΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡ, Π° ΠΊΠ°ΠΊΠΈΠ΅ β Π½Π΅ ΠΎΡΠ΅Π½Ρ?
Π‘Π°ΡΠ° ΠΠΎΠ»ΡΠ΄ΡΡΠ΅ΠΉΠ½: ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³ Π½Π° ΠΏΡΠΎΠ΄Π΅ β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊ.
ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ Ρ ΠΌΠ΅ΡΡΠΈΠΊ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ°, ΡΠΎΠΊΡΡΠΈΡΡΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² (ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, ΠΏΠ°ΠΌΡΡΡ, Π΄ΠΈΡΠΊ, ΡΠ΅ΡΡ) ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ (# Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠΈΠΏΠΎΠ² Π·Π°ΠΏΡΠΎΡΠΎΠ², # Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ). ΠΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ»Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π½Π° Linux ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠΎΠ΄Π΅ vmstat, iostat, sar, ifconfig, pidstat; Π΄Π»Ρ JVM ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ JMX-based ΡΡΠ»Ρ ΠΈΠ»ΠΈ jstat. ΠΡΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ 5-ΡΠΈ ΠΈΠ»ΠΈ 30-ΡΠΈ ΡΠ΅ΠΊΡΠ½Π΄Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠ°ΡΠΊΠΈ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²Π΅ΡΠ½ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΠΊΠΎΡΡΠ΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ, ΡΠ΅Π»ΠΈΠ·Ρ, ΠΌΠΈΡΠΎΠ²ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠ°ΠΆΠ½ΠΎ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΎΠΊΡΡΠΈΡΡΡΡΡΡ Π½Π° ΡΠΎΠ±ΠΈΡΠ°Π½ΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π΄Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ; ΠΎΠ½ΠΈ Ρ ΠΎΡΡ ΠΈ Ρ ΠΎΡΠΎΡΠΈ, Π½ΠΎ, ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΠ΅. ΠΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»ΠΈ, Π° ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π°ΠΆΠ΅ ΠΈ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ β ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅Π»ΡΠ·Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ½ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ: Π»ΠΎΠ³ ΡΠ±ΠΎΡΠ° ΠΌΡΡΠΎΡΠ°, Π·Π°ΠΏΡΠΎΡΡ ΡΠ΅ΡΠΈ, Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π Π°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡ Π³Π΄Π΅-ΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΡΡΠ΄Π½Π΅Π΅, ΡΠ΅ΠΌ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π·Π°Π΄Π°Π²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ, Π²ΡΠΎΠ΄Π΅ Β«ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ, ΠΏΠΎΠΊΠ° Π½Π°Π³ΡΡΠ·ΠΊΠ° Π¦Π Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ²ΡΡΠ°Π»Π°ΡΡ Π΄ΠΎ 100%Β» ΠΈΠ»ΠΈ Β«ΠΊΠ°ΠΊΠΈΠΌΠΈ Π±ΡΠ»ΠΈ IOPS Π΄ΠΈΡΠΊΠΎΠ² ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°Β». ΠΠ΄Π½ΠΈ Π»ΠΈΡΡ ΡΠΈΡΠ»Π°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ΅Π΄Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, Β«Ρ Π°ΡΠ΄ΠΊΠΎΡΠ½ΡΠΉΒ» ΡΡΠΎΠ²Π΅Π½Ρ: SSH Π² ΡΠ΅ΡΠ²Π΅ΡΠ΅ (ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΡΡΠ»ΠΎΠ²) Π΄Π»Ρ ΡΠ±ΠΎΡΠ° Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π»ΡΠ·Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ Β«ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ°ΠΌΠΈΒ».
ΠΠ»Ρ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π° Java-ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΆΡΡΠΊΠΈΡ ΡΡΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ²Π΅ΡΡ ΡΠ΄ ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, Π½ΠΎ ΠΌΠΎΠ³ΡΡ Π΅ΡΡ ΠΈ Π»Π³Π°ΡΡ Π²Π°ΠΌ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΆΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 20 Π»Π΅Ρ, Π΅ΡΡΡ Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°Π΄ΡΠΆΠ½ΡΡ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊ Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΎΠ²Π΅ΡΡ ΡΠ΄ΠΎΠΌ Π΄Π»Ρ JVM-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π― ΠΌΠΎΠ³Ρ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ Honest Profiler Π ΠΈΡΠ°ΡΠ΄Π° ΠΠΎΡΠ±Π΅ΡΡΠΎΠ½Π°, async-profiler ΠΠ½Π΄ΡΠ΅Ρ ΠΠ°Π½ΡΠ³ΠΈΠ½Π° ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠ΅Π³ΠΎ Π»ΡΠ±ΠΈΠΌΡΠΈΠΊΠ° β perf.
ΠΡΡΠ°ΡΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ² ΡΠΎΠΊΡΡΠΈΡΡΡΡΡΡ Π½Π° ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΡΡΠΎΠΊΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π¦Π. ΠΡΠΎ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π½ΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π² ΡΡΠΎΠΌ; Π½ΡΠΆΠ½Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ (async-profiler ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΈ ΡΡΠΎ), ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π½Π΅ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π² ΠΊΡΡ, Π΄ΠΎΡΡΡΠΏΡ ΠΊ Π΄ΠΈΡΠΊΡ, Π·Π°ΠΏΡΠΎΡΡ ΡΠ΅ΡΠΈ, Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ΅Π½Ρ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ»Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½Ρ-ΡΡΠ»ΠΎΠ² Π΄Π»Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΡΡΠ΅Π΄Ρ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Java ΠΏΠΎΠ΄ Linux
β Π― ΡΠ»ΡΡΠ°Π», ΡΡΠΎ ΠΏΠΎΠ΄ Java/Linux ΡΡΠ΅ΠΊ Π΅ΡΡΡ ΠΊΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅ΡΠΎΠ². ΠΠ°Π²Π΅ΡΠ½ΡΠΊΠ° Ρ ΡΡΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ Π±ΠΎΡΠΎΡΡΡΡ. ΠΠ°ΠΊ ΡΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡ?
Π‘Π°ΡΠ° ΠΠΎΠ»ΡΠ΄ΡΡΠ΅ΠΉΠ½: ΠΠ°, ΡΡΠΎ ΠΏΠ΅ΡΠ°Π»ΡΠ½ΠΎ. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ: Ρ Π²Π°Ρ Π΅ΡΡΡ Π±ΡΡΡΡΠ°Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π΄Π΅ΡΠ΅ΠΊΡΡ ΠΈ ΠΏΠΎΠ½ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ/ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ β ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ 1 ΡΠ°ΡΡΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΈ ΡΠΌΠΎΡΡΠ΅ΡΡ, Π²ΡΡ Π»ΠΈ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ΅ΡΠ΅Π· Β«ΠΊΡΠΎΡ ΠΎΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎΒ» Π½Π°Π΄ ΡΡΠΎΠΉ Β«Π»Π΅Π½ΡΠΎΠΉΒ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΡ Π±Π»ΠΈΠΆΠ΅ ΡΠΆΠ΅ ΠΎΠΏΠ°ΡΠ½ΠΎ. ΠΡΠΎΠ΄Π΅ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ? ΠΠΎ ΠΏΠΎΡΠΎΠΌ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π² Π½Π΅Π³ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΎΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π°ΠΌ Π½Π΅ ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ΅ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ; ΠΎΠ½ΠΎ ΠΆΠ΄ΡΡ, ΠΏΠΎΠΊΠ° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΡ Π² Π²ΠΎΠ»ΡΠ΅Π±Π½ΡΠΉ Β«Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉΒ» ΡΠ΅ΠΆΠΈΠΌ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄Π°ΡΡ Π²Π°ΠΌ Π²ΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ Π²Ρ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠΉΡΠΈ Π² ΡΠ²ΠΎΠΉ Β«Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉΒ» ΡΠ΅ΠΆΠΈΠΌ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΡΡΠ΄ΠΎΠΌ; ΠΈ Π΅ΡΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π΅ΡΠ΅ΠΊΡΠ° Π² ΠΎΠΊΠΎΡΠΊΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅Π»ΡΡ 5 ΡΠ΅ΠΊΡΠ½Π΄, ΡΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠ² Π² ΠΌΠΈΡΠ΅ JVM. YourKit, jstack, JProfiler, VisualVM β Ρ Π²ΡΠ΅Ρ Ρ Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Ρ Π¦Π: ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ΅ΠΌΠΏΠ»ΠΈΠ½Π³ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ API, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ JVM-ΡΡΠ΅Π΄Ρ ΠΈ Π²Π·ΡΡΡ ΠΈΡ ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π»Ρ ΠΎΡΡΡΡΠ° Ρ ΡΠ°ΠΌΡΠΌΠΈ Π³ΠΎΡΡΡΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΡΡΠ΅ΠΊΠ°ΠΌΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: ΡΡΠ΅Π΄Ρ Π½Π΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΡΠ°Π·Ρ ΠΆΠ΅, ΡΠ°Π½ΡΠ°ΠΉΠΌ ΠΆΠ΄ΡΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠΉΠ΄ΡΡ Π΄ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΡ ΠΌΠΎΠ³ΡΡ Π΅ΡΡ ΠΈ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ!
ΠΡΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ° ΡΠ²ΠΎΡ ΡΠΎΡΠΊΠ° Π·ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ (ΠΠΈΡΠΊΠΎΠ²ΠΈΡ ΠΈ ΡΠΎΠ°Π²Ρ., Β«Evaluating the Accuracy of Java ProfilersΒ»). ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ 1000 ΡΡΠ΅Π΄ΠΎΠ² Π² ΡΠ»ΠΎΠΆΠ½ΠΎΠΌ ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Spring, ΡΠ°ΡΡΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΡΠ°ΡΠ΅ 10 ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΡΡΠ΅ΠΊΠ°ΠΌ Π±ΡΠ΄ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅!
Π Π΅ΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΡΡΠΎΠΈΡ: Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΏΡΠΎΠ΄Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Β«ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅Β» ΡΡΠ»Ρ Π²ΡΠΎΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π²ΡΡΠ΅.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΈ ΠΎΠ΄ΠΈΠ½ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΠΉ:
- Honest Profiler Π ΠΈΡΠ°ΡΠ΄Π° ΠΠΎΡΠ±Π΅ΡΡΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ API, AsyncGetCallTrace, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄Π°, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π°. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠ½ Π±ΡΠ» ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ Oracle Developer Studio. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π° ΠΈ Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠ³Π½Π°Π» Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 100 ΠΡ). ΠΠ°ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π·ΡΡΡ ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΠ΅Π΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π°. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΅ΡΡΡ Π½Π΅ΠΏΡΠΎΡΡΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡΠΎΠ², ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π°, Π½ΠΎ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. (ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ JFR, ΡΡΠ΅Π±ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ)
- Linux perf ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π±ΠΎΠ³Π°ΡΡΠΉ ΡΡΠΌΠΏΠ»ΠΈΠ½Π³ ΡΡΠ΅ΠΊΠΎΠ² (Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π¦Π, Π½ΠΎ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π΄ΠΎΡΡΡΠΏ Π΄ΠΈΡΠΊΠ° ΠΈ Π·Π°ΠΏΡΠΎΡΡ ΡΠ΅ΡΠΈ). ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π΄ΡΠ΅ΡΠ° Java-ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΈΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ JVMTI-Π°Π³Π΅Π½ΡΠ°, Π΄ΠΎΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» (perf map), ΠΊΠΎΡΠΎΡΡΠΉ perf ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ ΡΡΠ΅ΠΊΠ°, Π΅ΡΠ»ΠΈ JIT ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΡΡΠ΅ΠΉΠΌΠ°. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ JVM-ΡΡΠ΅Π΄ΠΎΠ² ΠΈ Java-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½ΠΎ ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Ρ Π²Π°Ρ ΡΡΠ΅Π΄ΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ΅ΠΊ ΡΠ΄ΡΠ° ΠΈ ΡΡΠ΅ΠΊΠΈ C++.
- async-profiler ΠΠ½Π΄ΡΠ΅Ρ ΠΠ°Π½ΡΠ³ΠΈΠ½Π° ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. ΠΠ½ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π½Π°Π±ΠΎΡ ΠΎΠ±ΡΠ°Π·ΡΠΎΠ² perf, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΈΠ³Π½Π°Π»Π° Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° AsyncGetStackTrace ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Java-ΡΡΠ΅ΠΊΠ°. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΡΠ΅ΠΊΠΎΠ² Π΄Π°ΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΠΎΡΠΎΠΊΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ Java-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΡΡΠ΅ΠΉΠΌΠ°.
ΠΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅ safepoint-biased ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠ² Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ, ΡΠ΅ΡΡΡΡΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠΎΡΡ ΠΎΡΡΡΡΠΎΠ². ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ, Π½ΠΎ, Π΄ΡΠΌΠ°Ρ, ΡΠΎΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π° Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΎΠ²Π΅ΡΡ Π΅Π΄ΠΎΠΌ ΡΡΠΎΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΠΈΠ»ΠΈΠΉ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ
β Π ΡΠ»ΠΎΠ²Ρ ΠΎΠ± ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ , ΡΠ΅ΠΉΡΠ°Ρ ΠΌΠΎΠ΄Π½ΠΎ Π²ΡΡ ΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ? Π ΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΠ°Π±ΠΎΡΠ°Ρ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ?
Π‘Π°ΡΠ° ΠΠΎΠ»ΡΠ΄ΡΡΠ΅ΠΉΠ½: Π‘ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡ ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠΊΡΠ°ΡΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ½Ρ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Linux ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π²ΠΎΠΊΡΡΠ³ Π΄Π²ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ: Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½. ΠΡΡΠΏΠΏΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠ²ΠΎΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Π΄Π»Ρ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²: CPU time caps, Π»ΠΈΠΌΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, IOPS Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½ Π΄Π΅Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°: mount namespace ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΎΡΠΊΡ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ), PID namespace β ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², network namespace Π΄Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ·-Π·Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΡΡΠ»ΠΎΠ² ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Π·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ JVM-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ (Ρ ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π΅Π½Π½Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ JVM).
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, Π±ΡΠ΄Π΅Ρ Π»ΡΡΡΠ΅, Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΠΊΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ ΡΠ°Π·Π½ΡΡ Π²ΠΈΠ΄Π°Ρ observability ΡΡΠ»ΠΎΠ² Π΄Π»Ρ JVM. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ»ΡΡΠ°Π»ΠΈ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ· Π½ΠΈΡ , ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π²Π°ΡΠΈ Π·Π½Π°Π½ΠΈΡ:
- Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ»Ρ Π²ΡΠΎΠ΄Π΅ jps ΠΈ jinfo ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ JVM-ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ ΠΈ ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ;
- jstack ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠ°ΡΡ thread dump (ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡ) ΠΈΠ· Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ JVM-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²;
- jmap β Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ head dump Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ JVM-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΊΠ»Π°ΡΡΠΎΠ²;
- jcmd ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΡΠ»Ρ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌ JVM-ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· JVM attach interface; ΠΎΠ½ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠΎΠΊΠ΅ΡΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° UNIX, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ JVM-ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ jcmd Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ;
- jstat β Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ JVM-ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ°, ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠ»Π°ΡΡΠ°, JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°; ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° JVM, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠ΅ΠΉ ΡΠ°ΠΉΠ»Ρ /tmp/hsperfdata_$UID/$PID Ρ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅;
- Serviceability Agent ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ JVM ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΡΠ΅Π΄ΠΎΠ², ΡΡΠ΅ΠΊΠΎΠ² ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Ρ Π΄Π°ΠΌΠΏΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΆΠΈΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²; ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠΈΡΠ°Ρ ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ;
- JMX (ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π±ΠΈΠ½Ρ) ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΅ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅;
- JVMTI-Π°Π³Π΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ JVM-ΡΠΎΠ±ΡΡΠΈΡΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π·Π°ΠΏΡΡΠΊ/ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅Π΄Π°, monitor contention ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΏΡΠΈ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈΠ· Ρ ΠΎΡΡΠ°, ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ (Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅):
- Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΡ ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² mount namespace ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΈΠ· Ρ ΠΎΡΡΠ°. Π§Π°ΡΡΠΈΡΠ½ΠΎ ΡΡΠΎΡ Π΄ΠΎΡΡΡΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ bind-mounting ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ ΠΊ Π²Π²ΠΎΠ΄Ρ mount namespace ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ symbol resolving (ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π΄Π΅Π»Π°ΡΡ perf ΠΈ BCC ΡΡΠ»Ρ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ).
- Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ JVMTI-Π°Π³Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ perf map (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, perf-map-agent), ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° /tmp, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ID ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, /tmp/perf-1.map). Map-ΡΠ°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Ρ ΠΎΡΡΡ, Π° Ρ ΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΆΠ΄Π°ΡΡ Π²Π΅ΡΠ½ΡΠΉ ID ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°. (ΠΠΏΡΡΡ ΠΆΠ΅, perf ΠΈ BCC ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ).
- JVM attach interface (Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ jcmd, jinfo, jstack ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ»Ρ) ΡΡΠ΅Π±ΡΠ΅Ρ Π²Π΅ΡΠ½ΡΡ PID ΠΈ mount namespace attach ΡΠ°ΠΉΠ»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠΊΠ΅Ρ UNIX Π΄ΠΎΠΌΠ΅Π½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠ΅Π³ΠΎΡΡ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Ρ JVM. ΠΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΊΠΈΠ½ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ jattach utility ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ attach ΡΠ°ΠΉΠ»Π°, Π²Ρ ΠΎΠ΄Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΡΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ bind-mounting ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ Π½Π° Ρ ΠΎΡΡΠ΅.
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ JVM (Π² /tmp/hsperfdata_$UID/$PID), ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ jstat, ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΡΠΎ Π»Π΅Π³ΠΊΠΎ Π°Π΄ΡΠ΅ΡΡΠ΅ΡΡΡ bind-ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ /tmp ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π° Ρ ΠΎΡΡΠ΅;
- ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JMX-based ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² β ΡΡΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, Π΄ΠΎΡΡΡΠΏ ΠΊ JVM, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½Π° Π±ΡΠ»Π° ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ β ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΡ RMI endpoint, ΠΊΠ°ΠΊ Π²Ρ Π±Ρ Π΄Π΅Π»Π°Π»ΠΈ Π΄Π»Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ;
- ΡΡΠ»Ρ Serviceability Agent ΡΡΠ΅Π±ΡΡΡ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ Π²Π΅ΡΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ JVM-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈ Ρ ΠΎΡΡΠΎΠΌ. ΠΡΠΌΠ°Ρ, Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ Π½Π΅ ΡΡΠΎΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ Π½Π° Ρ ΠΎΡΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°Π·Π½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Π½Π° Π½ΡΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ JVM.
Π’ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ: Π° Π΅ΡΠ»ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½Ρ-ΡΡΠ»Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠ΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ Π½Π΅ ΠΈΠ·-Π·Π° ΠΌΠ΅Π½Ρ? Π₯ΠΎΡΡ ΠΈΠ΄Π΅Ρ Π½Π΅ΠΏΠ»ΠΎΡ Π°Ρ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ»ΠΎΠ² Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΈΠ·-Π·Π° seccomp. Docker, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² perf_event_open, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π° Ρ perf ΠΈ async-profiler; ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ptrace, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΠ»ΠΎΠ² Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ JVM-ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ seccomp Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ°Π²ΠΈΡ Ρ ΠΎΡΡ ΠΏΠΎΠ΄ ΡΠ³ΡΠΎΠ·Ρ. Π’Π°ΠΊΠΆΠ΅, ΠΏΠΎΠΌΠ΅ΡΠ°Ρ ΡΡΠ»Ρ ΠΏΡΠΎΡΠ°ΠΉΠ»ΠΈΠ½Π³Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π²Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ Π°ΡΠ°ΠΊΠΈ.
ΠΡ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ ΠΈ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΠΆΠ΅Π»Π΅Π·Π° Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅β¦
Π‘ΠΎΠ²ΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎ Π‘Π°ΡΠ° ΠΏΡΠΈΠ΅Π΄Π΅Ρ Π² Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΡΠ΅Π½ΠΈΠ½Π³ ΠΏΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ JVM-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅ ΠΈ Π²ΡΡΡΡΠΏΠΈΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Joker 2017 Ρ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΏΡΠΎ BPF, ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π² ΡΠ΅ΠΌΡ Π³Π»ΡΠ±ΠΆΠ΅ β Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ ΡΠ°Π½ΡΡ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ Ρ Π‘Π°ΡΠ΅ΠΉ Π»ΠΈΡΠ½ΠΎ.
ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠ°Π½ΡΠ³ΠΈΠ½ ΠΈ ΠΠΈΡΡΠ°Π½ ΠΠ°ΠΊΠ°ΡΡ ΠΎ Java-ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ / ΠΠ»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JUG Ru Group / Π₯Π°Π±Ρ
ΠΠ΅Π³ΠΊΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΠΎΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΡΡΠΎΠΈΡ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΡ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ: ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΡΡΡ ΡΠΆΠ΅ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΡΠΌΠΈ, Π΄ΠΎ ΡΠ΅Π³ΠΎ ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π΅ΡΡ Π½Π΅ Π΄ΠΎΠ΄ΡΠΌΠ°ΡΡΡΡ? ΠΠΎ Π² Java-ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΡΠΎΡΡΡΡ ΡΠ΅ΡΡΡΠ·Π½ΡΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ Π²ΡΠΎΠ΄Π΅ safepoint bias, ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ½Π΄ΡΠ΅ΠΉ apangin ΠΠ°Π½ΡΠ³ΠΈΠ½ (ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈ) Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π» ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²: Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ JPoint Π² Π°ΠΏΡΠ΅Π»Π΅ ΠΎΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ async-profiler, ΠΊΠΎΡΠΎΡΠΎΠΌΡ safepoint bias Π½Π΅ ΡΡΡΠ°ΡΠ΅Π½. ΠΡΡΠ³ΠΎΠΉ ΡΠΊΡΠΏΠ΅ΡΡ Π² ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ β ΠΠΈΡΡΠ°Π½ ΠΠ°ΠΊΠ°ΡΡ: ΠΎ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Ρ safepoints ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ·Π½Π°Π»ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π΅Π³ΠΎ Π±Π»ΠΎΠ³-ΠΏΠΎΡΡΡ Β«Why (Most) Sampling Java Profilers Are Fucking TerribleΒ».
ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ Ρ Π½ΠΈΠΌΠΈ ΠΎΠ±ΠΎΠΈΠΌΠΈ ΡΡΠ°Π·Ρ, Π½Π°ΡΠ°Π² ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ ΠΎΠ± async-profiler, Π° ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Java-ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π»ΠΎΠΌ.
JUG.ru: ΠΠ΅Π΄Π°Π²Π½ΠΎ async-profiler Π±ΡΠ» ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠ½ Π½Π° GitHub ΠΈΠ· Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΠ½Π΄ΡΠ΅Ρ Π² βjvm-profiling-toolsβ β ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ jvm-profiling-tools, ΠΈ ΡΠ΅ΠΌ Π²ΡΠ·Π²Π°Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅?
ΠΠΈΡΡΠ°Π½: ΠΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΠΏΡΠ΅ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡ ΠΎΠΆΠΈΠ΅ ΡΠ΅Π»ΠΈ. ΠΠ΄Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΈ ΡΡΠΈΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Π°ΠΊΡΠΈΠ²Π½Π΅Π΅ ΠΈΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ.
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΠΌΠ΅Π½Π½ΠΎ. ΠΠΎΠ³Π΄Π° ΡΡΠ°Π»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ async-profiler ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ Java-ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ, Ρ ΡΠ΅ΡΠΈΠ» Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π² Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΊ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΠΎΡΠΎΠΉ Π½Π΅ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠΈΡΡ Π² ΡΡΠΆΠΎΠΉ Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
ΠΠΈΡΡΠ°Π½: Π jvm-profiling-tools Π΅ΡΡΡ Honest Profiler, async-profiler ΠΈ perf-map-agent, ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΌΠ΅ Ρ ΡΠ°Π·Π½ΡΡ ΡΡΠΎΡΠΎΠ½: perf-map-agent ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π»ΠΈΠ½ΡΠΊΡΠΎΠ²ΠΎΠ³ΠΎ perf, Honest Profiler ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ AsyncGetCallTrace, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ safepoint bias, Π° async-profiler ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΡΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΠ°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π² ΠΈΠ΄Π΅Π΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΎΠ±ΠΎΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π½ΠΈΡΠ΅Π³ΠΎ ΠΊΠΎΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π½Π΅Ρ, Π½ΠΎ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ Π½ΠΈΠΊΠΎΠΌΡ Π² Π³ΠΎΠ»ΠΎΠ²Ρ ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎ.
ΠΠΈΡΡΠ°Π½: ΠΠΎΠΎΠ±ΡΠ΅ ΡΡΠΎ Π±ΡΠ»ΠΎ Π² Solaris Studio, Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Solaris Studio Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ 20 Π² ΠΌΠΈΡΠ΅.
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ Π·Π½Π°Ρ, ΠΎΠ½ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ·ΠΎΠ²Ρ ΡΠ΄ΡΠ°, ΡΠ°ΠΊ Π²Π΅Π΄Ρ?
ΠΠΈΡΡΠ°Π½: ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅ ΡΠ΄ΡΠΎ.
JUG.ru: ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Honest Profiler ΠΈ async-profiler Π΅ΡΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Β«ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ safepoint biasΒ», ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ Π²Π·Π³Π»ΡΠ΄Π΅ Π½Π° jvm-profiling-tools Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² Π² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π²ΠΎΠΏΡΠΎΡ: Β«ΠΡ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π΄Π²ΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?Β» Π§ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌ ΡΠΊΠ°Π·Π°ΡΡ?
ΠΠ½Π΄ΡΠ΅ΠΉ: Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ async-profiler Π΄Π°Π»Π΅ΠΊΠΎ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ. ΠΠ΅Π΄Ρ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌ AsyncGetCallTrace Π² HotSpot ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°: Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ³ΡΠ°Π½ΠΈΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ JVM Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡ, Ρ ΠΎΡΡ async-profiler ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΈ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΠΌΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Honest Profiler Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ΅ΠΊ-ΡΡΠ΅ΠΉΡΡ. ΠΠΎ Π΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ Π²ΠΎΠΊΡΡΠ³ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠ½ ΡΠΌΠ΅Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎ, Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ UI, Π° async-profiler β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Java-Π°Π³Π΅Π½Ρ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΠΉ ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
ΠΠΈΡΡΠ°Π½: Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π±ΡΠ΄ΡΡΠ΅Π΅ Π·Π° async-profiler. Π ΠΌΠ½Π΅ Π±Ρ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ, ΡΡΠΎΠ±Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Honest Profiler ΠΏΠΎΠΏΠ°Π»ΠΈ Π² async-profiler. ΠΡΡΡ Π΅ΡΡ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Honest Profiler ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° macOS, Π° async-profiler ΠΏΠΎΠΊΠ° Π½Π΅Ρ: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Ρ ΠΈΠΏΡΡΠ΅ΡΠΎΠ² Π² Π½Π°ΡΠ΅ΠΉ ΠΎΡΡΠ°ΡΠ»ΠΈ β ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ.
JUG.ru: ΠΡΠΎΠ΄Π΅ Π±Ρ ΠΠ°Π΄ΠΈΠΌ Π¦Π΅ΡΡΠΊΠΎ ΠΈΠ· ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΎΠ² ΡΠΆΠ΅ Π΄Π΅Π»Π°Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ async-profiler Π½Π° macOS?
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΡΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ perf events. Linux-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΠ»ΠΎΠΌΠ°Π» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ macOS. ΠΠΎ Π΅ΡΡΡ ΠΈ Ρ ΠΎΡΠΎΡΠΈΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ: Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π½Π° Π΄Π½ΡΡ Ρ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π» Ρ ΠΠΎΡΠΌΠ°Π½ΠΎΠΌ ΠΠ°ΡΡΠ΅ΡΠΎΠΌ ΠΈΠ· Apple (Π°Π²ΡΠΎΡΠΎΠΌ Netty), Π΅ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ async-profiler, ΠΈ ΠΎΠ½ Π»ΡΠ±Π΅Π·Π½ΠΎ ΡΠΎΠ³Π»Π°ΡΠΈΠ»ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Mac-ΠΏΠΎΡΡ.
JUG.ru: Π ΠΈΡΠ»Π΅ Π² async-profiler ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ Ρ ΠΈΠΏΠ° β ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ?
ΠΠ½Π΄ΡΠ΅ΠΉ: Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π² Java. ΠΠ΅ΡΠ²ΡΠΉ β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π±Π°ΠΉΡΠΊΠΎΠ΄Π°. ΠΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½-ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ½ ΡΠΆΠ°ΡΠ΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠ»Π°ΡΠ΅Π²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π ΡΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ: ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Escape Analysis Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΠΉ Π² Ρ ΠΈΠΏΠ΅.
ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DTrace probes, ΡΡΠΎ ΡΠΎΠΆΠ΅ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΠΎ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠ°ΡΡΠ΅ JVM.
ΠΠΎ ΡΡΠΎ Π½Π΅ Π²ΡΡ. ΠΡΡΡ Π΅ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΡΠΌΠΏΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ TLAB (Thread Local Allocation Buffer). ΠΠ½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Java Mission Control / Java Flight Recorder, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Oracle JDK, Π° Ρ OpenJDK Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΡ ΠΎΠΆΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²Π½ΡΡΡΠΈ Google, Π½ΠΎ ΡΠ°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ JVM.
Π― Π½Π°ΡΡΠ» ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, Ρ OpenJDK. Π‘Π΅ΠΉΡΠ°Ρ Π½Π΅ Π±ΡΠ΄Ρ ΠΏΠΎΠ³ΡΡΠΆΠ°ΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π½ΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ.
ΠΠΈΡΡΠ°Π½: Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Java Mission Control ΡΠ΅ΠΉΡΠ°Ρ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΠΉ, ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ Π² JMC ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΡΠ΅Π½Ρ ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΠΉ ΡΡΠ°ΡΡ ΠΌΠ΅ΠΉΠ½ΡΡΡΠΈΠΌΠΎΠΌ.
JUG.ru: ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Π²ΠΈΠΆΠΊΠΈ Π² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ Π² 2017-ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π³ΠΎΠ΄Ρ Π½Π°Π·Π°Π΄. Π ΡΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ°ΠΊΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ?
ΠΠ½Π΄ΡΠ΅ΠΉ: Java β ΠΊΠΎΡΠ΅Π½Ρ Π²ΡΠ΅Ρ Π·ΠΎΠ» π ΠΠ½Π° Π΄Π΅Π»Π°Π΅Ρ ΠΆΠΈΠ·Π½Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π»ΡΡΡΠ΅, ΠΈ Ρ ΡΠΆΠ΅. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΈΠ·-Π·Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ JVM ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ, Π½ΠΎ Ρ Π΄ΡΡΠ³ΠΎΠΉ β JVM ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ API Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΈΡΡΠ°Π½: Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΠΈΡ Java ΠΏΠΎΡ ΠΎΠΆ Π½Π° Windows. Windows Π±ΡΠ»Π° ΡΠΆΠ°ΡΠ½ΠΎΠΉ ΠΠ‘ (Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ΅ΠΉΡΠ°Ρ ΠΊΡΠ΄Π° Π»ΡΡΡΠ΅), Π½ΠΎ, ΡΡΡΠ°Π΄Π°Ρ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ², ΠΎΠ½Π° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅Π»Π° Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠΏΠ΅Ρ . Π’Π° ΠΆΠ΅ ΠΈΡΡΠΎΡΠΈΡ ΠΈ Ρ Java. Π ΡΠ»ΡΡΠ°Π΅ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Java ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΏΠ»ΠΎΡ ΠΎ. Π― Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ²Π΅ΡΠ΅Π½ Π² ΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°ΠΊ.
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ JVM ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Solaris Studio, ΡΠ°ΠΊ ΡΡΠΎ Π²ΡΡ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½ΠΈΡ . Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π±ΡΠ»ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π»ΠΈ.
ΠΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Java ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΡΡ. ΠΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π² Solaris Studio, Π½ΠΎ ΡΠΎΠ³Π΄Π° Π±ΡΠ»ΠΎ Π½ΠΈΡΠ΅Π²ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ.
ΠΠ½Π΄ΡΠ΅ΠΉ: Π‘ΡΠΈΡΠ°Ρ Π½ΡΠΆΠ½ΡΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎ Java Π½Π΅ ΡΠ°Π²Π½ΠΎ HotSpot, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ JVM ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄ΡΡΠΆΠ΅Π»ΡΠ±Π½Ρ ΠΊ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ°ΠΌ.
ΠΠΈΡΡΠ°Π½: ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Ρ ΡΡΠΎ-ΡΠΎ ΡΠΏΡΡΡΠΈΠ», Π½ΠΎ ΠΎ ΠΊΠ°ΠΊΠΎΠΉ JVM ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ? Π― Π·Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Zing, ΠΈ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ° ΡΠ°Π±ΠΎΡΡ Ρ IBM J9β¦
ΠΠ½Π΄ΡΠ΅ΠΉ: Π‘Π΅ΠΉΡΠ°Ρ Π½Π° ΠΌΠ½Π΅ ΡΡΡΠ±ΠΎΠ»ΠΊΠ° Excelsior JET, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ» ΠΎΠ± ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΠ½ ΡΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Java Π² Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΈ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ Π·Π½Π°Ρ, ΠΎΡ safepoint bias Π½Π΅ ΡΡΡΠ°Π΄Π°Π΅Ρ.
ΠΠΈΡΡΠ°Π½: Π, ΠΎΠΊ. ΠΠΈΠΊΠΎΠ³Π΄Π° ΡΡΠΈΠΌ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ. ΠΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ Π±ΡΠ°ΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ.
JUG.ru: AsyncGetCallTrace, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ async-profiler ΠΈ Honest Profiler, Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ API. ΠΠ΅ ΠΎΡΡΡΠ°Π΅ΡΡΡ Π»ΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«Ρ Π°ΠΊΠΎΠΌΒ»? ΠΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΠ΅ΡΡ Π»ΠΈ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ? ΠΠΎΠΌΠΎΠ³Π»Π° Π±Ρ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Oracle Π² Π²ΠΎΠΏΡΠΎΡΠ°Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ?
ΠΠΈΡΡΠ°Π½: AsyncGetCallTrace ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΅ΡΡ Ρ Π·Π°ΠΏΡΡΠΊΠ° OpenJDK 6, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ» ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡΠΎ Β«Π½Π΅Π·Π°ΠΊΠΎΠ½Π½ΠΎΡΠΎΠΆΠ΄Π΅Π½Π½ΡΠΉ ΡΠ΅Π±Π΅Π½ΠΎΠΊΒ», Π½ΠΎ Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π΅Π³ΠΎ ΠΌΠΎΠ³ΡΡ Π²Π·ΡΡΡ ΠΈ Π²ΡΠΊΠΈΠ½ΡΡΡ. ΠΠΎΠ³Π΄Π° ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΠΏΡΠΈΠ΅ΠΉ JVM, ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ. Π’Π°ΠΊ ΡΡΠΎ Π΄ΡΠΌΠ°Ρ, Π½Π°ΠΌ Π½Π΅ ΡΡΠΎΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ. Π₯ΠΎΡΡ ΠΌΠ½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ AsyncGetCallTrace ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Ρ Π½ΠΎΠ²ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Graal.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠΎΠΌΠΎΠ³Π»Π° Π±Ρ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Oracle ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ JMC Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°, Π° Π²ΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ Java-ΠΌΠΈΡΡ ΠΎΡΡΠ°ΡΡΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ VisualVM. Π‘Π΅ΠΉΡΠ°Ρ Π² ΡΡΠΎΠΌ Π΄Π΅Π½ΡΠ³ΠΈ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Oracle ΠΈΡΠΏΡΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²: ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡ Java, Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΈ ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ β Ρ Π΄ΡΡΠ³ΠΎΠΉ. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π΄Π»Ρ Π½ΠΈΡ ΠΏΠΎΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ JVM-ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠ² ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π±Ρ ΡΡ ΡΠ΄ΡΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π― Π½Π΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ. Π― ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Ρ, ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΡΠ΅ΠΉΡΠ°Ρ Ρ ΠΎΡΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²Π΅ΡΠΈ Π²ΡΠΎΠ΄Π΅ JMC. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ Jigsaw Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°, Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ.
ΠΠ½Π΄ΡΠ΅ΠΉ: Π‘ΠΎΠ³Π»Π°ΡΡΡΡ, ΡΡΠΎ AsyncGetCallTrace β ΠΎΡΡΠ°ΡΡΠΈ Β«Ρ Π°ΠΊΠ΅ΡΡΠΊΠΈΠΉΒ» API. Π ΡΠΎΠΌΡ ΠΆΠ΅ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ: Ρ ΠΈ ΡΠ°ΠΌ ΡΠΎΠΎΠ±ΡΠ°Π» ΠΎ Π±Π°Π³Π°Ρ . ΠΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΡΠΎ Π»ΡΡΡΠ΅Π΅, ΡΡΠΎ Π΅ΡΡΡ Π² HotSpot JVM.
JUG.ru: Π ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Π²Π΅ΡΠ΅ΠΉ Π²ΡΠΎΠ΄Π΅ AsyncGetCallTrace, ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΡΡΠΎ-ΡΠΎ Π΅ΡΡ, ΡΡΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡ ΠΆΠΈΠ·Π½Ρ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΡΠΌ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠ²?
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΠ°. ΠΠ΅Π΄Π°Π²Π½ΠΎ Π² ΡΠΏΠΈΡΠΊΠ°Ρ ΡΠ°ΡΡΡΠ»ΠΊΠΈ HotSpot ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΎΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΠΉ. Π ΠΈΡΠΎΠ³Π΅ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ JEP, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ API Π΄Π»Ρ ΡΡΠΌΠΏΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΠΏΠ°. ΠΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΌΡ Π² ΡΠ°ΡΡΡΠ»ΠΊΠ°Ρ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ JEP β ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΡΡΡ. Π’Π°ΠΊ ΡΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π² Java 11β¦
JUG.ru: Π§ΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎ Π±ΡΠ΄ΡΡΠ΅ΠΌ Java-ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Oracle? ΠΡΠΎΡΠ°ΠΉΠ»Π΅ΡΡ ΡΡΠ°Π½ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ΅ΠΉΡΠ°Ρ?
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΡΠ΅Π½Ρ Π½Π° ΡΡΠΎ Π½Π°Π΄Π΅ΡΡΡ. Π ΡΠ²ΠΎΠΈΡ Π΄ΠΎΠΊΠ»Π°Π΄Π°Ρ Ρ ΡΡΠ°ΡΠ°ΡΡΡ Π΄ΠΎΠ½ΠΎΡΠΈΡΡ Π΄ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΡΡΠ»Ρ, ΡΡΠΎ Ρ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ΅ΠΉΡΠ°Ρ, Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ. ΠΡΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ , Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ ΠΈ Π»ΠΎΠ²ΡΡΠΊΠ°Ρ . Π Π΄ΡΠΌΠ°Ρ, ΠΊΠΎΠ³Π΄Π° Π±ΠΎΠ»ΡΡΠ΅ Π»ΡΠ΄Π΅ΠΉ ΠΎΡΠΎΠ·Π½Π°ΡΡ ΠΌΠ°ΡΡΡΠ°Π±Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈΠΌΡΡΡΡ ΠΈΡ ΡΠ»ΡΡΡΠ°ΡΡ.
ΠΠΈΡcΠ°Π½: Π ΡΡΠ΄Π΅ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π΅ΡΡΡ ΠΊΡΠ΄Π° ΡΠ°ΡΡΠΈ. Π‘ perf-map-agent ΠΌΡ ΠΎΠ±ΡΠ΅Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΠ½Π³ ΠΏΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΊ async-profiler, ΡΠ½ΠΎΠ²Π° Π΅Ρ ΡΠ΅ΡΡΠ΅ΠΌ. ΠΠ½Π΅ Π±Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΅Ρ ΡΠ½ΠΎΠ²Π° Π²ΠΎΠΏΠ»ΠΎΡΡΠ½Π½ΠΎΠΉ.
ΠΡΡΠ³Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ β Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ async-profiler ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ 100% CPU, Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π²ΠΈΡΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ, ΠΏΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ±ΠΈΠ²Π°ΡΡΡΡ Ρ ΡΠΎΠ»ΠΊΡ ΠΊΠ°ΡΡΠΈΠ½Ρ. ΠΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΈ Ρ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΠ°. Π‘Π΅Π³ΠΎΠ΄Π½Ρ FlameGraph ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ Ρ Π±Ρ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΎΠ½ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π΅Π½.
JUG.ru: ΠΡ ΠΎΠ±Π° ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ (Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°Ρ ΠΈ Π±Π»ΠΎΠ³-ΠΏΠΎΡΡΠ°Ρ ), ΡΡΠΎ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΡΠΊΠ°ΠΆΡΠ½Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ. Π‘ΡΠΈΡΠ°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ, ΡΡΠΎ ΠΎΡΡΠ°ΡΠ»ΠΈ ΡΠΈΠ»ΡΠ½ΠΎ Π²ΡΠ΅Π΄ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠ΄ΡΠΌΠΈ ΡΡΠΎΠΉ ΠΈΡΠΊΠ°ΠΆΡΠ½Π½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½Ρ? ΠΠΎΠΆΠ΅Ρ Π»ΠΈ Π±ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ ΠΎΡ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠΎΠ² ΡΠΎΠ³Π΄Π° Π²ΠΎΠΎΠ±ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π΄Π°, ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·Ρ?
ΠΠΈΡΡΠ°Π½: ΠΠ°, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π²ΡΠ΅Π΄ΠΈΡ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Java, ΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΠ°ΠΌ ΠΏΠΎΠ»Π½ΠΎ Π±ΡΠ»ΡΠΈΡΠ°. Π ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅Π³ΠΎ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΠ΄ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΌΠ½Π΅, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² HashMap. Π ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΡΠΌΠ°Π»ΠΈ, ΡΡΠΎ HashMap ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ ΠΈΠΌ ΡΡΠΎΠ³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ. Π― Π½Π΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π² ΠΈΡ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² Π½ΡΠΌ, Π½ΠΎ ΠΊΠ°ΠΊ Π±Ρ ΡΠΎ Π½ΠΈ Π±ΡΠ»ΠΎ, ΠΎΠ½ΠΈ ΠΎΠ± ΡΡΠΎΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ·Π½Π°ΡΡ. Π ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠΌΠΎΡΡΡΡ Π½Π° Π³ΡΠ°ΡΠΈΠΊ ΡΠ°ΡΡ ΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ CPU, ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° GC. Π’ΠΎ Π΅ΡΡΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Β«Π±ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ Π³ΠΎΡΠ»ΡΡΠΊΠΎΠΌΒ» Ρ Π½ΠΈΡ ΠΎΠΊΠ°Π·Π°Π»ΡΡ GC, ΠΎΠ½ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠΌΠΎΠ³ΡΡ ΡΡΠΎΠ³ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ.
ΠΠ½Π΄ΡΠ΅ΠΉ: Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ ΠΠΈΡΡΠ°Π½ΠΎΠΌ, Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Ρ, ΡΡΠΎ Π»ΡΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠ΅ΠΌ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ. ΠΠ»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β Π½Π΅ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ ΠΏΡΠΈΠ²ΠΈΡΠ°Π΅Ρ, Π° ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΡΡΡ, Ρ ΠΎΡΡ Π·Π°ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΡΠΎΠ΅ΡΡΡ Π² Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ , ΠΈ Π»ΡΠ±ΠΎΠΉ ΡΡΠΌΠΏΠ»ΠΈΡΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρ Π΅Ρ Π»Π΅Π³ΠΊΠΎ Π²ΡΡΠ²ΠΈΡ.
ΠΠΈΡΡΠ°Π½: Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π½Π΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΡΡΡ, ΠΈ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠΎ Π΅ΡΠ»ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π²Π°ΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅Ρβ¦ ΠΡ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ, Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ½ Π²ΡΠ΄Π°ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ Π±Π΅ΡΡΠΌΡΡΠ»ΠΈΡΡ, ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ: Β«ΠΡΡΡΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈΒ», ΡΠ°ΠΊΠΈΠΌ Ρ Π²Π°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π²ΡΠ²ΠΎΠ΄, ΠΈ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΎΡΠ±ΠΈΠ²Π°Π΅Ρ Ρ Π»ΡΠ΄Π΅ΠΉ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΡ.
JUG.ru: ΠΠ½Π°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ Java-ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΌ Π²ΡΠ΅ΠΌ Π½Π°Π΄ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π΄ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ ΠΈ Π½Π°Π΄ Π·Π½Π°Π½ΠΈΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΠΎ Π½ΠΈΡ ?
ΠΠΈΡΡΠ°Π½: ΠΠ°. Π― Π΄ΡΠΌΠ°Ρ, ΠΌΠ°ΡΡΡΠ°Π±Π½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ ΡΡΠΏΠ΅Ρ Π° Π² Java-ΠΌΠΈΡΠ΅ β ΡΡΠΎ JMH, Java Microbenchmarking Harness. Π ΠΏΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΎΡΠ΅Π½Ρ ΡΡΠΏΠ΅ΡΠ½ΡΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Π² Π°ΡΠΏΠ΅ΠΊΡΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π»ΡΡΡΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡΡ.
ΠΡΠΌΠ°Ρ, ΡΠΎ, ΡΡΠΎ ΠΠ½Π΄ΡΠ΅ΠΉ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΈ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π»ΡΠ΄ΡΠΌ, ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ.
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΠ°ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅ ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π±ΡΠ΄ΡΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½Ρ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΌΠ΅ΡΡ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. Π‘ ΡΠ΅ΠΌ ΠΆΠ΅ JMH: Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· Π²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ Π»ΡΠ΄ΠΈ ΠΏΠΈΡΠ°Π»ΠΈ Π΅ΡΡΠ½Π΄Ρ Π² JMH, Π° ΠΏΠΎΡΠΎΠΌ Π΄Π΅Π»Π°Π»ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ. ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΡΠΏΠ΅Ρ Π°.
JUG.ru: ΠΡ ΠΎΠ±Π° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΡΡΠΎΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π΄ΠΎΠΊΠ»Π°Π΄Π°ΠΌΠΈ Π½Π° Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Joker, ΠΈ Π²Ρ ΠΎΠ±Π° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΌ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ², ΡΠ°Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡ . Π ΡΡΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ Π½ΠΎΠ²ΠΈΠ·Π½Π°?
ΠΠΈΡΡΠ°Π½: ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» Π½Π° QCon Π΄ΠΎΠΊΠ»Π°Π΄ βProfilers are lying hobbitsesβ, Ρ ΠΏΠΎΠ΄ΡΠΌΠ°Π», ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ Π»ΡΡΡΠ΅Π΅ Π² Π½ΡΠΌ β ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. ΠΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΅ΡΠΈΠ» ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½ΠΎ ΡΠ°ΠΌ Π΄ΠΎΠΊΠ»Π°Π΄ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ. ΠΡ ΡΠ½ΠΎΠ²Π° Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΠΏΡΠΎΡΠ°ΠΉΠ»Π΅ΡΠ°Ρ ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²Π²Π΅ΡΡΠΈ Π½Π°Ρ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½ΠΎ, Π΄ΡΠΌΠ°Ρ, Ρ Π½Π°ΡΠ½Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ Π±ΡΠ΄Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π²ΡΠΊΠ°ΡΠ°Π±ΠΊΠ°ΡΡΡΡ. Π ΠΏΡΠΎΡΠ»ΠΎΠΌ Π΄ΠΎΠΊΠ»Π°Π΄ Π±ΡΠ» ΡΠ΅ΡΠΈΠ΅ΠΉ ΡΡΡΠΏΡΠΈΠ·ΠΎΠ², ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ²ΡΠΈΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ Β«Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΒ». Π ΡΡΠΎΡ ΡΠ°Π· Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊ: Β«Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΌ Ρ ΡΡΠΈΠΌ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡΒ».
ΠΠ½Π΄ΡΠ΅ΠΉ: ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π» ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠΈΠΈ async-profiler, Π½Π°ΡΠ°ΡΠΎΠΉ Π½Π° JPoint 2017. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠΎΠΌ ΠΌΡ Ρ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΠΎΠΌΠΈΡΠ΅ΡΠΎΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ ΠΌΠΎΠ΅Π³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° Ρ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΠΈΡΡΠ°Π½Π°, ΡΠ°ΠΊ ΡΡΠΎ Ρ ΡΠ΅ΡΠΈΠ» Π²Π·ΡΡΡ Π½ΠΎΠ²ΡΡ ΡΠ΅ΠΌΡ. ΠΠΎΠΊΠ° ΡΡΠΎ Ρ Π½Π΅ Π³ΠΎΡΠΎΠ² ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ, Π½ΠΎ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Joker 2017 ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΌΠΎΠΉ Π½ΠΎΠ²ΡΠΉ Π΄ΠΎΠΊΠ»Π°Π΄! Π’Π°ΠΊ ΡΡΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ.
Java-ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ Joker, Π³Π΄Π΅ Π²ΡΡΡΡΠΏΡΡ ΠΠΈΡΡΠ°Π½ ΠΈ ΠΠ½Π΄ΡΠ΅ΠΉ, ΡΠΎΡΡΠΎΠΈΡΡΡ Π² ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³Π΅ 3-4 Π½ΠΎΡΠ±ΡΡ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² ΡΠΏΠΈΠΊΠ΅ΡΡ Joker ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² Π΄ΠΈΡΠΊΡΡΡΠΈΠΎΠ½Π½ΡΡ Π·ΠΎΠ½Π°Ρ , ΡΠ°ΠΊ ΡΡΠΎ ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΏΡΠΎΡΠΈΡΡ ΠΈΡ ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π»ΠΈΡΠ½ΠΎ. Π ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΠ½Π΄ΡΠ΅Ρ ΠΈ ΠΠΈΡΡΠ°Π½Π°, ΡΠ°ΠΌ Π±ΡΠ΄ΡΡ Π΄Π΅ΡΡΡΠΊΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΏΠΈΠΊΠ΅ΡΠΎΠ² β Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ Π±ΠΈΠ»Π΅Ρ).
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java Π² IDE NetBeans
IDE NetBeans Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π‘ΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ NetBeans ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π¦Π ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΡΠ΅Π΄Π΅ IDE; ΠΎΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΡΠΎΡ Π²Π²ΠΎΠ΄Π½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ β ΠΎΠ±Π·ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π² ΡΠΎΡΡΠ°Π² ΡΡΠ΅Π΄Ρ IDE, ΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ Π±ΡΡΡΡΠΎ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² NetBeans. ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π² ΡΡΠ΅Π΄Π΅ IDE, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π Π½Π΅ΠΉ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π΄Ρ IDE, ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΎΡΠ²Π΅ΡΠ΅Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Anagram Game, ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java, Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π² ΡΠΎΡΡΠ°Π² ΡΡΠ΅Π΄Ρ IDE. Π₯ΠΎΡΡ Anagram Game β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java, ΠΏΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄Ρ IDE Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
- ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ
- ΠΡΠ΅ΠΌΡ Π¦Π, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠΌΠΊΠΎΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ
ΠΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΊΠΈ
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌ ΠΈΠ»ΠΈ ΠΎΠΏΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ:
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java
- IDE NetBeans
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌ ΡΡΠ΅Π±Π½ΡΠΌ ΠΊΡΡΡΠΎΠΌ.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠ΅Π±Π½ΡΠΌ ΠΊΡΡΡΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π΄Π΅ IDE Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡ AnagramGame, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΡ. Π‘ΡΠ΅Π΄Π° IDE Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° AnagramGame.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Anagram Game. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ ΡΠ½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠ°ΠΊ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Anagram Game Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ «Π€Π°ΠΉΠ» > ΠΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ» (CTRL+SHIFT+N; ⌘+SHIFT+N Π² Mac ΠΠ‘) Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΌΠ΅Π½Ρ.
- Π ΠΌΠ°ΡΡΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ «ΠΡΠΈΠΌΠ΅ΡΡ > Java».
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ «Anagram Game». ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠ°Π»Π΅Π΅».
- Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠ°Π²Π΅ΡΡΠΈΡΡ».
ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΠΎΡΠΎΠ²ΠΎ» ΡΡΠ΅Π΄Π° IDE ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Anagram Game.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ‘ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ’ > ‘ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ’ > AnagramGame Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΌΠ΅Π½Ρ.
ΠΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Anagram Game Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ»ΡΠΆΠΈΡΠ½ΡΠΌ Π² ΠΎΠΊΠ½Π΅ ‘ΠΡΠΎΠ΅ΠΊΡΡ’. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅Π΄Ρ IDE Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΠ΅Π΄Π° IDE ΠΏΡΠΎΡΠΈΠ»ΠΈΡΡΠ΅Ρ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ Π²ΡΠ±ΡΠ°Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ, ΡΡΠ΅Π΄Π° IDE Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ±ΡΠ°Π½ Π² ΠΎΠΊΠ½Π΅ ‘ΠΡΠΎΠ΅ΠΊΡΡ’.
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π±ΡΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, ΡΡΠ΅Π΄Π° IDE Π·Π°ΠΏΡΠΎΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½ΠΎΠ²Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΡ. ΠΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ > Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ Π² ΠΌΠ΅Π½Ρ ‘ΠΡΠΎΡΠΈΠ»Ρ’.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java. ΠΠ°ΠΆΠΌΠΈΡΠ΅ ‘ΠΠ°Π»ΠΈΠ±ΡΠΎΠ²Π°ΡΡ’.
ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. ΠΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ», ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ. ΠΠ°Π½Π½ΡΠ΅ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ .nbprofile Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ NetBeans IDE 7.4 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ > ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΌΠ΅Π½Ρ ‘ΠΡΠΎΡΠΈΠ»Ρ’ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ‘ΠΡΠ±ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java Π΄Π»Ρ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ’.
ΠΡΠ±ΠΎΡ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π‘ΡΠ΅Π΄Π° IDE ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΄ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°ΡΡ ΠΎΠ΄ ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π° ΡΡΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΊΠ°
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Java Profilers
1. ΠΠ±Π·ΠΎΡ
ΠΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. ** ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ Π·Π°Ρ ΠΎΡΠΈΠΌ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ²Π΅ΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Ρ. Π. ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
Java Profiler — ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ,
ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Java Π½Π° ΡΡΠΎΠ²Π½Π΅ JVM
. ΠΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ), Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ°.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Java:
2. JProfiler
JProfiler — Π»ΡΡΡΠΈΠΉ Π²ΡΠ±ΠΎΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ JProfiler ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅ΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ — Π² Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ JProfiler:
ΡΡΡΠ»ΠΊΠ°:/uploads/1-jprofiler-overview-probing.png[ΠΠ±Π·ΠΎΡΠ½ΡΠΉ ΠΎΠ±Π·ΠΎΡ JProfiler Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ]
ΠΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ
ΠΌΠ°ΡΠΈΠ½Π°Ρ
, Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½Π° Π½ΠΈΡ
ΡΡΠΎ-Π»ΠΈΠ±ΠΎ
.
JProfiler ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ
ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π±Π°Π· Π΄Π°Π½Π½ΡΡ
SQL ΠΈ NoSQL
. ΠΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ
JDBC, JPA/Hibernate, MongoDB, Casandra ΠΈ HBase.
ΠΠ° ΡΠ½ΠΈΠΌΠΊΠ΅ ΡΠΊΡΠ°Π½Π° Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ JDBC ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ΅ΠΊΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ:
ΡΡΡΠ»ΠΊΠ°:/uploads/2-jprofiler-database-probing-1.png[ΠΡΠΎΡΠΌΠΎΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ JProfiler]
ΠΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΎ
Π΄Π΅ΡΠ΅Π²Π΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ Π½Π°ΡΠ΅ΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ
ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠΏΡΡΠ΅Π½Ρ
, JProfiler ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ Ρ ΡΡΠΈΠΌ ΡΠΏΡΠ°Π²ΠΈΡΡΡ.
Live Memory — ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ JProfiler, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ
Π²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π½Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ
. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π²ΡΠ·ΠΎΠ²ΠΎΠ².
Π ΡΠ»ΡΡΠ°Π΅ Π΄Π΅ΡΠ΅Π²Π° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡ Π΄Π΅ΡΠ΅Π²Π° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΆΠΈΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ ΠΌΡΡΠΎΡΠΎΠΌ, ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠΈΡ . ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅ΡΠΈΡΡ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ»ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΡΠΊΡΠ°Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π²ΡΠ΅ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ²:
ΡΡΡΠ»ΠΊΠ°:/uploads/3-jprofiler-live-memory.png[JProfiler ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ]
JProfiler ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ
ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄Π°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Eclipse, NetBeans ΠΈ IntelliJ. ΠΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅
ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΡ ΠΎΡ ΡΠ½ΠΈΠΌΠΊΠ° ΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ
!
3. YourKit
YourKit Java Profiler ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Windows, MacOS, Linux, Solaris, FreeBSD ΠΈ Ρ. Π.).
ΠΠ°ΠΊ ΠΈ JProfiler, YourKit ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠ±ΠΎΡΠΎΠΊ ΠΌΡΡΠΎΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΡΠ΅ΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ, Ρ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ½Π½Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ssh
.
ΠΠΎΡ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Tomcat:
ΡΡΡΠ»ΠΊΠ°:/uploads/4-yourkit-tomcat-profiling-memory.png[ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ YourKit Java Profiler ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Tomcat]
YourKit ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅Ρ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ
ΠΎΡΠΈΠΌ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΄Π°Π½Π½ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΠΏΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π±ΡΠ»ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Ρ, ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ.
YourKit ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΎΠ±Π»Π°ΡΡΡΡ
Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°
, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΡ Π² ΠΏΠΎΡΠΎΠΊΠ°Ρ
. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Β«ΡΡΠΎ, Π΅ΡΠ»ΠΈΒ».
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 5 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°:
ΡΡΡΠ»ΠΊΠ°:/uploads/5-yourkit-threads-profiling.png[Π ΠΈΡΡΠ½ΠΎΠΊ 5. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² YourKit Java Profiler]
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ²Ρ SQL ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
NoSQL
Ρ ΠΏΠΎΠΌΠΎΡΡΡ YourKit. ΠΠ½ Π΄Π°ΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ.
Π₯ΠΎΡΡ ΡΡΠΎ Π½Π΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ YourKit Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Ρ ΠΎΡΠΎΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ»ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΠΏΠΎΠΊΡΠΏΠΎΠΊ Ρ ΠΎΠ΄Π½ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ.
4. Java VisualVM
Java VisualVM — ΡΡΠΎ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ, Π½ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
ΡΠ²ΡΠ·Π°Π½ Ρ Java Development Kit
(JDK). ΠΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π΄ΡΡΠ³ΠΈΡ
Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ
, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ
Π² JDK, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ
JConsole
,
jstat
,
jstack
,
jinfo
ΠΈ
jmap
.
ΠΠΈΠΆΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±Π·ΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Java VisualVM:
ΡΡΡΠ»ΠΊΠ°:/uploads/6-visualvm-overview.png[ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ tomcat-ΡΠ΅ΡΠ²Π΅ΡΠ° Java VisualVM]
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Java VisualVM ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ
ΡΠ°ΡΡΠΈΡΠΈΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½ΠΎΠ²ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²
. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠ΅Π½ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Java VisualVM.
Java VisualVM ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ
Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
(ΠΈΠΌΡ Ρ
ΠΎΡΡΠ°/IP ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ)
, Π½ΠΎ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΡΠ½Π½Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ssh
. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ±ΡΠ°ΡΡ Π»ΠΈΠ±ΠΎ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ
(ΠΎΠ±ΡΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 2 ΡΠ΅ΠΊΡΠ½Π΄Ρ).
ΠΠΈΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΠ°ΠΌΡΡΠΈ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Java VisualVM:
ΡΡΡΠ»ΠΊΠ°:/uploads/7-visualvm-sample-memory.png[ΠΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ Java VisualVM]
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ
ΡΠ½ΠΈΠΌΠΊΠΎΠ² Java VisualVM ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ
ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠ΅Π°Π½ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
.
5. ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ NetBeans
NetBeans Profiler
ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Ρ Oracle IDE NetBeans Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
.
Π₯ΠΎΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ
ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ Java VisualVM
, ΡΡΠΎ Ρ
ΠΎΡΠΎΡΠΈΠΉ Π²ΡΠ±ΠΎΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ
ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π±ΡΠ»ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΎ Π² ΠΎΠ΄Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (IDE Profiler).
ΠΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ IDE.
ΠΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΡΠ½ΠΈΠΌΠΊΠ΅ ΡΠΊΡΠ°Π½Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° NetBeans Profiler:
ΡΡΡΠ»ΠΊΠ°:/uploads/8-netbeans-telemetry-view.png[ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΠΈ Netbeans Profiler]
Netbeans Profiler ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ
Ρ
ΠΎΡΠΎΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
. NetBeans Profiler ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π°Π½ΡΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΡΠΎ Π΄Π°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ·Π½Π°ΡΡ
ΠΡΡΡΠΈΠΉ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Java Profiler Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅? [Π·Π°ΠΊΡΡΡΡΠΉ]
Π― ΠΈΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Java Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ Ρ ΠΎΡΠ΅Π½Ρ Π²ΡΡΠΎΠΊΠΈΠΌ ΡΠΏΡΠΎΡΠΎΠΌ, ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ:
- Π»Π΅Π³ΠΊΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ (Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ, Π±Π΅Π· ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΠΊΡΡΡΠΊΠΎΠ² ΠΈ Ρ. Π΄.). ΠΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ .Π±Π°Π½ΠΊΠΈ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
- Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ/ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ JVM Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½, Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
- ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ, Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠ΅Π½Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΡ ΡΠ΄ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ.
- Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ «ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠ΅» Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ-Π²ΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π³ΠΎΡΡΡΠΈΠ΅ ΡΠΎΡΠΊΠΈ,Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° / ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Ρ. Π΄.
ΠΏΠΎ ΡΡΡΠΈ, ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ΄Π΅ΡΡ Π² ΡΠΏΡΡΠΊΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π½ΠΈΠΊΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΈΠ»ΠΈ Π½Π΅ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π΅ΡΡΡ, Π½ΠΎ Π·Π°ΡΠ΅ΠΌ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ Ρ Π»ΠΎΠΏΠΎΡ (ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ) Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΡΠ΄Π½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π³ΠΎΡΡΡΠΈΠ΅ ΡΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
10 ΠΎΡΠ²Π΅ΡΠΎΠ²
Π²Ρ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ YourKit? ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΈΡΠ΅ΡΠ΅.
Java VisualVM-ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java (Java applications) Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Java (JVM). Java VisualVM ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ JVM, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Java Development Kit (JDK), ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Java. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π³ΠΎΡΡΠ΅ΠΉ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Ρ Π²Π°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ JVM ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ. ΠΡΠΎ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Oracle JDK IT self…
$ jvisualvm
14
Π°Π²ΡΠΎΡ: Prabath Siriwardena
ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Java Flight Recorder. ΠΡΠΎ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Ρ ΠΎΡΠΎΡΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ JVM
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
-XX:StartFlightRecording=name=test,filename=test.jfr,dumponexit=true
ΠΈ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π·Π°ΠΏΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JMC.
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΠ»Π°ΡΡΠΎΡΠΌΡ Eclipse TPTP — Eclipse Test & Performance Tools. ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΠΎΠ½ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Ρ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΈ ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²Π°ΡΠΈΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌ.
http://www.eclipse.org/tptp/
Π΄ΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ -http://www.newrelic.com/. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΠΎΠ½ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ. ΠΡΠΎΡΡΠΎΠΉ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ (ΠΎΠ΄ΠΈΠ½ .ΠΎΠΏΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ jar ΠΈ A-agent).
Fusionreactor Java Application Performance Monitor, ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΎΡΠ΅Π½Ρ Π½ΠΈΠ·ΠΊΠΈΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Java Profiler ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ.
http://www.fusion-reactor.com/production-java-profiler/
FusionReactor ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΌΠΈΠ½ΡΡ, ΠΈ Ρ Π½ΠΈΡ
Π΅ΡΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ 14-Π΄Π½Π΅Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ.
1
Π°Π²ΡΠΎΡ: David Tattersall
ΠΏΠΎΡΠΌΠΎΡΡΠΈ Java Mission Control Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π‘Π°ΠΌΠΎΠΏΠΈΡΡΠ°ΠΌ. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²ΡΠΏΡΡΠΊΠ° Oracle JDK 7 Update 40 (7u40), Java Mission Control ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Ρ HotSpot JVM, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π²ΡΡΠΎΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ ΠΈ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΠ΅Ρ Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΡΠ΅Π²Π° Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΡΠ°ΠΊΡΡ ΠΊΠ°ΠΊ Callgrind.
1
Π°Π²ΡΠΎΡ: Muxiang Yang
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
Java Profiler — YourKit
ΠΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ Π½Π°Π³ΡΠ°Π΄Π°ΠΌΠΈ Java Profiler
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π¦Π ΠΈ ΠΏΠ°ΠΌΡΡΠΈ Java Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΏΡΠΎΡΡΡΠΌ ΠΈ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
YourKit ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» ΡΠ΅Π²ΠΎΠ»ΡΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π°
ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π°, ΠΏΡΠΈΠ½ΠΎΡΡ Π±Π΅ΡΠΏΡΠ΅ΡΠ΅Π΄Π΅Π½ΡΠ½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Java.
ΠΠΎΡΠΎΠ²Ρ ΠΊ Π²Π°ΡΠΈΠΌ Π·Π°Π΄Π°ΡΠ°ΠΌ
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΈΠΏΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Java,
Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ
, Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ.ΠΡΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π² ΡΡΠ΅Π΄Π°Ρ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π°.
Π’Π΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π²Π°ΡΠ΅ΠΉ IDE
ΠΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ Eclipse, IntelliJ IDEA ΠΈ IDE NetBeans ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π²ΠΈΠ΄ΠΎΠ² Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ, Π° ΡΠ°ΠΊΠΆΠ΅
ΡΠΌΠ½Π°Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠΎΡΠΈΠ»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ, ΠΊΠ°ΠΊ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅.ΠΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ
Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ.
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ SSH-Π΄ΠΎΡΡΡΠΏ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
YourKit Java Profiler ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ JVM ΠΈ ΠΠ‘ Π΄Π»Ρ
ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ
ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠΌΠΈ ΡΠ°ΡΡ
ΠΎΠ΄Π°ΠΌΠΈ. ΠΡΠΎΡΠΈΠ»ΠΈ Π¦Π ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ
Π½Π°Π·ΡΠ²Π°ΠΉΡΠ΅ Π΄Π΅ΡΠ΅Π²ΡΡ ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΊΠΈ Π³ΠΎΡΡΡΠΈΡ
ΡΠΎΡΠ΅ΠΊ.
Smart ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ΅Π½ΠΈΡΡ
ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΡ
ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠ°ΡΠΈΠΊΠΈ ΠΏΠ»Π°ΠΌΠ΅Π½ΠΈ
ΠΡΠ°ΡΠΈΠΊ ΠΏΠ»Π°ΠΌΠ΅Π½ΠΈ CPU — ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ,
ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ°ΠΏΡΠΎΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ Π²Π΅Π±-Π·Π°ΠΏΡΠΎΡΡ
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ SQL ΠΈ Π²Π΅Π±-Π·Π°ΠΏΡΠΎΡΡ,
ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π½Π°ΠΉΡΠΈ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ MongoDB, Cassandra ΠΈ HBase.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΊΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΡΡ
Π³ΡΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Π»ΡΠ±ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ
ΡΠΎΡΠΌΠ°. ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ HashMap ΠΈΠ»ΠΈ
Π‘ΡΡΠΎΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ½ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ.
ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΡΡΠ»ΠΊΠ° Π² Π³ΡΠ°ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.ΠΡΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²Π°ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
ΠΊΠΎΠ΄.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠΌΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΠΏΠ°ΠΌΡΡΠΈ
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
YourKit Java Profiler ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ
ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΡΠ΅ΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΎΡΠΌΠ°ΡΠ°Ρ
.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ
40+ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΆΠ΄ΡΡ, ΡΡΠΎΠ±Ρ
ΠΊΠΎΠ΄ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅.
Profiler ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°Π΅Ρ ΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ
Π² Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
.
ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΠΈΡ
.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡΠΈ ΡΡΠ΅ΡΠΊΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ,
Π½Π΅Π·Π°ΠΌΠΊΠ½ΡΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ SQL ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°.
ΠΠ°ΠΉΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²
YourKit Java Profiler Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΌΡ ΠΈ ΠΏΠΎΠ½ΡΡΡ
ΠΏΡΠΈΡΠΈΠ½Ρ.
Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠΈΠΊΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡ
ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΠΎΡΠΎΠΊΠ°Ρ
ΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ
ΠΌΠΎΠ½ΠΈΡΠΎΡΡ.
ΠΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Ρ HTTP-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΈ SQL-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ
ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠ°ΡΡΠΈΠ½Π° ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π²Π°ΡΠΈΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
Π’Π΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π¦Π, ΠΏΠ°ΠΌΡΡΠΈ, Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΡ
Π΄Π°Π½Π½ΡΡ
ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
ΠΠ°ΡΡΠΈΠ²Π½ΠΎΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ — ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ, Π½ΠΎ ΡΠ°ΡΡΠΎ ΡΠΊΡΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
YourKit Java Profiler Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠ΅ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Π»Π΅ΡΡ
YourKit Java Profiler ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠ»Π°ΡΡΠΎΠ², ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ.
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΡΡΠ°Π½Π½ΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ProGuard, yGuard, Zelix KlassMaster, Allatori,
ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Java-ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΡ.ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΠΌΠΎΠ΄ Π΄Π»Ρ Minecraft, ΠΏΡΠΎΡΡΠΎ
Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΡ ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΠ» ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ MCP, ΠΈ ΠΎΠ½ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°.
ΠΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ
ΠΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ
ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ.
ΠΠ°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π½ΠΈΠ·ΠΊΠΈΠΌΠΈ, ΡΡΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅.
ΠΠΊΡΠΏΠΎΡΡ Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΈ ΠΎΡΠΊΡΡΡΡΠΉ API
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ
ΠΈΡ
Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π² ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
.
Π Π°ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ API ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·ΠΎΠ½Π΄Ρ ΠΈ
ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ΡΠ΅ΠΆΠΈΠΌΠ°Ρ
, Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΈΡ
ΠΏΡΡΠΌΠΎ Ρ Π²Π°ΡΠ΅Π³ΠΎ
ΠΠΎΠ΄ Java.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΠ½ΡΠ΅Π³ΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Π² Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ
ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅Π΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΈΠ±ΠΊΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΡΡΠ΅Π΅
Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°.
ΠΡ Π²ΡΡΠΎΠΊΠΎ ΡΠ΅Π½ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ Π΄Π»Ρ
Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΠΈ Π½Π°ΡΡΠ½ΡΡ
ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ.
.
Java VisualVM — ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Java VisualVM ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²
Π²ΠΊΠ»Π°Π΄ΠΊΠ°, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π°Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ
Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ. ΠΠ°ΠΆΠ΄Π°Ρ Π²ΠΊΠ»Π°Π΄ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ,
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΠΊΠ»Π°Π΄ΠΊΠ° Profiler ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ
ΡΠ΅Π°Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅
Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΏΠΎΠΊΠ° Π²Ρ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
- ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. - ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠΌ, Π²ΡΠ΄Π΅Π»ΡΡΡΠΈΠΌ ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΠ΅Π°Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Java VisualVM ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ
Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ±ΠΎΡ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΊΠΎΠ³Π΄Π°
Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²
Π²ΠΊΠ»Π°Π΄ΠΊΠ° ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
- ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠΎΠ³Π΄Π° Π°ΠΊΡΠΈΠ²Π΅Π½, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
(ΠΎΠΊΠΎΠ»ΠΎ 2 ΡΠ΅ΠΊΡΠ½Π΄). - ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΅ΠΉΡΠ°Ρ. ΠΠ°ΠΆΠΌΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ
Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. - ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ°. ΠΠ°ΠΆΠΌΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΌΡΡΠΎΡ
ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. - Π‘Π±ΡΠΎΡΠΈΡΡ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ. ΠΠ°ΠΆΠΌΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΡΠΆΠ΅
Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. - Π‘Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ
Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ. ΠΠΎΠ³Π΄Π° Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠ½ΠΈΠΌΠΎΠΊ, ΡΠ½ΠΈΠΌΠΎΠΊ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π²
Π½ΠΎΠ²Π°Ρ ΠΏΠΎΠ΄Π²ΠΊΠ»Π°Π΄ΠΊΠ°. - Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ Π²ΠΈΠ΄. ΠΠ°ΠΆΠΌΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ Π²ΠΈΠ΄
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ»Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ .png. ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠ΅Π»ΠΊΠ°Π΅ΡΠ΅
ΠΊΠ½ΠΎΠΏΠΊΠ° Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅
ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΠ»Π΅ ΡΠΈΠ»ΡΡΡΠ° ΠΏΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°. Π§ΡΠΎΠ±Ρ
ΠΎΡΡΠΈΠ»ΡΡΡΡΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½ Π² ΠΏΠΎΠ»Π΅ ΡΠΈΠ»ΡΡΡΠ° ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°,
Π²ΡΠ±Π΅ΡΠΈΡΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Return.Π’Ρ ΠΌΠΎΠΆΠ΅ΡΡ Π²ΠΈΠ΄Π΅ΡΡ
ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠΈΠ»ΡΡΡΠ°, ΡΠ΅Π»ΠΊΠ½ΡΠ² ΡΡΡΠ΅Π»ΠΊΡ ΡΠΏΡΠ°Π²Π°
ΠΏΠΎΠ»Ρ ΡΠΈΠ»ΡΡΡΠ° ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java VisualVM ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²ΡΠ±ΡΠ°Π²
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΡΠ»Π°ΠΆΠΎΠΊ ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ
Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΏΡΠΎΠ³ΡΠ΅ΡΡ.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π¦Π
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΎΡΠΈΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π¦Π Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ (Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ), ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°.ΠΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Java VisualVM ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΡΠΎΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ Β«Π²Π²ΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π°Β», ΠΊΠΎΠ³Π΄Π°
Π²Π²ΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Β«Π²ΡΡ
ΠΎΠ΄Π° ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π°Β»
ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΡΠΈ Π²ΡΡ
ΠΎΠ΄Π΅ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ±Π° ΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ
ΠΎΡΠΌΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π‘Π½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Profiler, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ CPU
Π‘Π½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Profiler, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ CPU
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ
ΠΠΎΠ³Π΄Π° Π²Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Java VisualVM.
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ
ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠ»Π°ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²) Π²
Π’Π°Π±Π»ΠΈΡΠ°.ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΠ° Π² Java Virtual
Machine (JVM), ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ
ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π°ΡΠ°Π»Π° ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ, Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΠΊΠ»Π°ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ.
Java VisualVM ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ°ΠΊ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ΅
ΡΠΈΡΠ»ΠΎ ΠΈ Π² ΠΏΡΠΎΡΠ΅Π½ΡΠ°Ρ
. Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π±Π°ΠΉΡΡ
Π² Π²ΠΈΠ΄Π΅ Π³ΡΠ°ΡΠΈΠΊΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π½Ρ Π±Π°ΠΉΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅
ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ², Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ.
Π‘Π½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Profiler, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ
Π‘Π½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Profiler, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ½ΠΈΠΌΠΊΠΎΠ² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°
Java VisualVM ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π΄Π»Ρ Π·Π°Ρ
Π²Π°ΡΠ°
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘Π½ΠΈΠΌΠΎΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π·Π°Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ½ΠΈΠΌΠΊΠ°. ΠΠ·ΡΡΡ
ΡΠ½ΠΈΠΌΠΊΠ°, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π‘Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²
ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.ΠΠΎΠ³Π΄Π° Π²Ρ Π±Π΅ΡΠ΅ΡΠ΅
ΡΠ½ΠΈΠΌΠΎΠΊ, ΡΠ½ΠΈΠΌΠΎΠΊ ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π
ΡΠ·Π΅Π» Π΄Π»Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΌΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ ΡΠ·Π»ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²
ΠΠΊΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π‘ΠΊΡΠΈΠ½ΡΠΎΡ ΡΠ½ΠΈΠΌΠΊΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ
Π‘Π½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π° Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ½ΠΈΠΌΠΊΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠ½ΠΈΠΌΠΊΠ°Ρ
ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΡΠΌ. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ:
.ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
— ΠΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ Java Π»ΡΡΡΠ΅: JProfiler ΠΈΠ»ΠΈ YourKit?
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
- ΠΠΊΠΎΠ»ΠΎ
ΠΡΠΎΠ΄ΡΠΊΡΡ
- ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
ΠΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π΄Π΅Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π’Π°Π»Π°Π½Ρ
ΠΠ°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π±ΡΠ΅Π½Π΄ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠ Π΅ΠΊΠ»Π°ΠΌΠ°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
ΠΠ°Π³ΡΡΠ·ΠΊΠ°β¦
.
YourKit Java Profiler Help — ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°
ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ .
ΠΡΠΈ ΡΠ΅ΠΆΠΈΠΌΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ³Π΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Java, Π±ΡΠ΄Ρ ΡΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅, Π°Π³Π΅Π½Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½ Π² JVM.
ΠΠΎΠ΄Ρ ΠΎΠ΄ 1. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ JVM Ρ Π°Π³Π΅Π½ΡΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°
ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, ΡΠΌ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄ΡΠ΅ΠΌ:
ΠΠΎΠ΄Ρ ΠΎΠ΄ 2. ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ JVM, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠΌΡ Π±Π΅Π· Π°Π³Π΅Π½ΡΠ°
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π°Π³Π΅Π½ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ JVM ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅,
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π³Π° Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Π»ΡΠ±ΠΎΠ΅ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Java ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ JVM Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ,
ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ .
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠΈ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ JVM
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Java: Java 7, Java 8, Java 9, Java 10, Java 11, Java 12, Java 13, Java 14.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ JDK:
- Oracle JDK
- OpenJDK, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ·:
- AdoptOpenJDK
- Amazon Corretto
- Azul Zulu
- BellSoft Liberica JDK
- JetBrains
- ΠΡΠ°ΠΊΡΠ»
- ΠΡΠ°ΡΠ½Π°Ρ ΡΠ»ΡΠΏΠ°
- SapMachine
- IBM JDK ΠΈ OpenJ9
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ
AIX
- AIX, 32-Π±ΠΈΡΠ½Π°Ρ Java (ppc) ΠΈ 64-Π±ΠΈΡΠ½Π°Ρ Java (ppc64)
FreeBSD
- FreeBSD 9 ΠΈ Π½ΠΎΠ²Π΅Π΅, i386 ΠΈ amd64 (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ x86-64).ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅:
ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Ρ
ΠΈ ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π¦Π — Π²ΡΠ΅ΠΌΡ Π¦Π ΠΏΡΠΎΡΠ΅ΡΡΠ° — Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²,
ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ FreeBSD Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎ ΠΏΠΎΡΠΎΠΊΡ.
HP-UX
- HP-UX IA64, 32-ΡΠ°Π·ΡΡΠ΄Π½Π°Ρ ΠΈ 64-ΡΠ°Π·ΡΡΠ΄Π½Π°Ρ Java
Linux
Linux, 32-Π±ΠΈΡΠ½Π°Ρ Java ΠΈ 64-Π±ΠΈΡΠ½Π°Ρ Java:
- x86 / x86-64
- ARM, ΠΆΠ΅ΡΡΠΊΠΈΠΉ ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ
- ppc / ppc64 / ppc64le
macOS
- macOS 10.9 ΠΈ Π½ΠΎΠ²Π΅Π΅, Intel, 64-Π±ΠΈΡΠ½Π°Ρ Java
Solaris
- Solaris 10 ΠΈ Π½ΠΎΠ²Π΅Π΅, x86, 32-Π±ΠΈΡΠ½Π°Ρ ΠΈ 64-Π±ΠΈΡΠ½Π°Ρ Java
- Solaris 9 ΠΈ Π½ΠΎΠ²Π΅Π΅, SPARC, 32-Π±ΠΈΡΠ½Π°Ρ ΠΈ 64-Π±ΠΈΡΠ½Π°Ρ Java
ΠΠΊΠ½Π°
32-Π±ΠΈΡΠ½Π°Ρ Java (x86) ΠΈ 64-Π±ΠΈΡΠ½Π°Ρ Java (x86-64):
- Windows 10, Windows Server 2016, Windows Server 2019
- Windows 8.1, Windows Server 2012 R2
- Windows 8, Windows Server 2012
- Windows 7, Windows Server 2008 R2
.