89 ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ²
π VisualVM: Π¨Π²Π΅ΠΉΡΠ°ΡΡΠΊΠΈΠΉ Π½ΠΎΠΆ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
π§ Π§ΡΠΎ ΡΠΌΠ΅Π΅Ρ VisualVM?
βͺ π ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ JVM Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ:
β ΠΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ (Heap ΠΈ Non-Heap).
β ΠΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π·Π°Π³ΡΡΠ·ΠΊΡ CPU, ΡΠ°ΡΡΠΎΡΡ GC.
β ΠΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΡΠΈΠΊ.
βͺ π ΠΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΡΠ·ΠΊΠΈΡ
ΠΌΠ΅ΡΡΒ»:
β Π’ΠΎΠΏ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ CPU/ΠΏΠ°ΠΌΡΡΠΈ.
β Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π½ΡΡ
ΡΡΠ°ΡΡΠΊΠΎΠ² ΠΊΠΎΠ΄Π°.
βͺ π΅οΈβοΈ ΠΠ΅ΡΠ΅ΠΊΡΠΈΠ² Π΄Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ:
β ΠΠ½Π°Π»ΠΈΠ· heap-Π΄Π°ΠΌΠΏΠΎΠ² (ΠΏΠΎΠΈΡΠΊ ΡΡΠ΅ΡΠ΅ΠΊ, Β«ΡΡΠΆΠ΅Π»ΡΡ
Β» ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²).
β Π’ΡΠ΅ΠΉΡΠΈΠ½Π³ ΠΏΠΎΡΠΎΠΊΠΎΠ²: ΡΡΠ°ΡΡΡΡ (Π°ΠΊΡΠΈΠ²Π΅Π½, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½, ΠΎΠΆΠΈΠ΄Π°Π΅Ρ).
βͺ π§© ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²:
β ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ JConsole, JMX.
β ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² (Tomcat, Jetty).
π ΠΠ°ΠΊ Π½Π°ΡΠ°ΡΡ?
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅:
β ΠΠ»Ρ Java β€8: Π²ΡΡΡΠΎΠ΅Π½ Π² JDK.
β ΠΠ»Ρ Java 9+: ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΎΡΠΊΡΠΎΠΉΡΠ΅ VisualVM β Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡ JVM Π² ΡΠΏΠΈΡΠΊΠ΅.
π§ ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
β«οΈ ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΏΠ°Π»Π° (ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ, Π»Π°Π³ΠΈ).
β«οΈ ΠΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ (OOM-ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΠΎΡΡ Heap).
β«οΈ ΠΠ΅Π΄Π»ΠΎΠΊΠΈ Π² ΠΏΠΎΡΠΎΠΊΠ°Ρ
(ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Π·Π°Π²ΠΈΡΠ°Π΅ΡΒ»).
β«οΈ ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅Π»ΠΈΠ·ΠΎΠΌ.
π‘ ΠΠ°ΠΉΡΡ
Π°ΠΊ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Sampler Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Β«ΠΏΡΠΎΠΆΠΎΡΠ»ΠΈΠ²ΡΡ
Β» ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
#tools #Π±Π°Π·Π°
ΠΠΊΠΎΠ»ΠΎ ΠΌΠΈΠ½ΡΡΡ
19Β ΠΌΠ°ΡΡΠ°