Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·ΡΠΊΠ°Ρ Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°Π½Π΅Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ»ΠΈΡΠ½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π° ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠΏΠΎΡΡΠ΅Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ΅, ΠΏΡΡΠΌΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅Ρ. ΠΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠΈΠ½ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ Garbage collector (GC).
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΠ°ΠΌΡΡΠΈ Π² Java
ΠΠ΅ΡΠ΅Π΄ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° ΠΏΠ°ΠΌΡΡΡ Π² Java.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ·ΡΠΊΠΈ Π²ΠΎΠ·Π»Π°Π³Π°ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ C, C++, Rust. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΠΌ, Π² ΠΊΠΎΠ΄Π΅, Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ°Π»ΠΈΡΠΈΠ΅ GC Π² ΡΠ·ΡΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ Π² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅: Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ, Π½ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ΅ΡΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ.
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
- Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
- ΠΠ°ΡΠΈΡΠ° ΠΎΡ ΡΡΠ΅ΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ.
B ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ:
- ΠΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ².
- Π£ΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ :)
- StopTheWorld
Π¨ΡΡΠΎΡΠ½Π°Ρ ΠΌΠΎΠ»ΠΈΡΠ²Π° ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΡΡΠΎΡΠ°
ΠΠ°ΠΉ ΠΌΠ½Π΅ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΠΊΠ° Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ. ΠΠ°ΠΉ ΠΌΠ½Π΅ ΡΠΌΠ΅Π»ΠΎΡΡΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠΎ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ. Π Π΄Π°ΠΉ ΠΌΠ½Π΅ ΠΌΡΠ΄ΡΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΎΡΠ»ΠΈΡΠΈΡΡ ΠΎΠ΄Π½ΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ GC
ΠΠ°ΠΌ Π±ΡΡΡΡΠΎ, Π΄Π΅ΡΠ΅Π²ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ?
- Throughput. ΠΠ±ΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² CPU, Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ GC.
- ΠΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ. ΠΠ° ΠΊΠ°ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Footprint. ΠΠ±ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
Π Π°Π±ΠΎΡΠ° GC
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Ρ GC Π΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ 2 Π·Π°Π΄Π°ΡΠΈ:
- ΠΠ°ΠΉΡΠΈ ΠΌΡΡΠΎΡ. Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
- Π ΡΠΎΠ±ΡΠ°ΡΡ ΠΌΡΡΠΎΡ. Π£Π½ΠΈΡΡΠΎΠΆΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΡΠΎΠ±Ρ Π½Π° ΠΈΡ ΠΌΠ΅ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π°Π»ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅.
NOTE
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ GC Π½Π΅ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ Π² Heap
ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΡΡΠΎΡΠ°
Reference Counting
ΠΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΠ³Π΄Π° ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ Π½ΡΠ»Ρ, ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ.
ΠΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π³ΡΠ°Ρ, Π³Π΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π°, Π½ΠΎ ΠΎΠ½ΠΈ Π²ΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΌΡΡΠΎΡΠΎΠΌ.
Tracing
ΠΠΎΠ΄ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ. ΠΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ½ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΡ , βΠΊΠΎΡΠ½Π΅Π²ΡΡ β (GC Root), ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΎΡ ΡΡΠΈΡ ΠΊΠΎΡΠ½Π΅ΠΉ.
Π§ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ±ΡΠ°Π½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ GC Root?
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Main ΠΊΠ»Π°ΡΡΠ΅ ΠΈ main ΠΌΠ΅ΡΠΎΠ΄Π΅, ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ main, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΡΡΠ»ΠΊΠΈ ΠΈΠ· JNI.
ΠΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΡΠ±ΠΎΡΡ ΠΌΡΡΠΎΡΠ°
- StopTheWorld
- Copy Collector
- Mark and Sweep
- Mark and Compact
- Generational Collection
- Incremental Collection
- Parallel Collection
- Concurrent Collection
ΠΠΎΡΠΎΠΊΠΈ GC
Search thread
- ΠΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° ΠΈ ΠΏΠΎΠ΄Π°Π΅Ρ ΡΠΈΠ³Π½Π°Π» Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ.
- ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΠ½ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ.
GC thread
- ΠΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΌΡΡΠΎΡΠ°.
- Π’Π°ΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ.
- ΠΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΠΈΠ½ Π΄Π»Ρ ΡΡΠ°ΡΡΠ°.
- ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ StopTheWorld
ΠΡΠΈΡΠΈΠ½Ρ ΡΡΠ°ΡΡΠ° GC
ΠΠ»Π°Π²Π½ΡΠ΅:
- Allocation Failure. JVM ΠΏΠΎΠΏΡΡΠ°Π»Π°ΡΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½ΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ Ρ Π²Π°ΡΠΈΠ»ΠΎ
- GC Locker. ΠΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄Π°Π» ΡΠΈΠ³Π½Π°Π» Π½Π° ΡΠ±ΠΎΡΠΊΡ.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅:
- Adaptive Size Ergonomics.
- Allocation Profiler. ΠΡΠΎΡΠ°ΠΉΠ»Π΅Ρ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈΡΠΊΠ°ΠΆΠ°Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ.
- Heap Inspection.
- Heap Dump.
- No GC. ΠΡΠ»ΠΈ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π΅ΡΠ΅ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π»Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠ»Π° Π΄Π°Π²ΠΎΠ»ΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ.
- Last Ditch Collection.
- Perm Generation Ful.
- Meradata GC Threshold.
Minor Collection
ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Eden Space ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ, ΡΠΎ GC ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π±ΡΡΡΡΡΡ (minor) ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ°. ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΌΡΡΠΎΡΠ°, Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ, - ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±Π΅Π· ΡΡΡΠ»ΠΎΠΊ ΡΠ΄Π°Π»ΡΡΡΡΡ, Π° Π²ΡΠΆΠΈΠ²ΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² Survivor Space.
Full Collection
Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ minor ΡΠ±ΠΎΡΠΎΠΊ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡ Heap ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π‘Π±ΠΎΡΡΠΈΠΊΠΈ
- Epsilon GC. ΠΠ΅ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΌΡΡΠΎΡ :)
- Serial GC. ΠΠΎΡΠ°Π»ΡΠ½ΠΎ ΡΡΡΠ°ΡΠ΅Π», Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
- Parallel GC. ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°Π΅Π².
- Parallel Compacting Collector.
- Concurrent Mark Sweep. ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΡΠΎΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Ρ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
- Garbage First. Π₯ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
- Ultra-low latency
- ZGC
- Shenandoah GC
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ Serial ΠΈΠ»ΠΈ Parallel GC.

ΠΠ°ΠΊ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΡΠ±ΠΎΡΠΊΡ?
- ΠΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ GC. ΠΠ΅Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΡΠΉ ΡΡΡΠ΄.
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π°Π³ΠΈ JVM
ΠΠΎΠΌΠ°Π½Π΄Π° System.gc() Π½ΠΎΡΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Ρ
Π°ΡΠ°ΠΊΡΠ΅Ρ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ JVM Π·Π°ΠΏΡΡΡΠΈΡΡ GC, Π½ΠΎ JVM ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ°Π±ΠΎΡΡ GC
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ VM
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps-Xlog:gcΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ StopTheWorld.- Π‘ΡΠΎΠΈΡ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΎ Safe Point. ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π±Π΅Π· ΡΡΠ΅ΡΠ° Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ².
-Xlog:safepoint. ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Ρ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠΌΠΈ ΡΠ°ΡΡ ΠΎΠ΄Π°ΠΌΠΈ.-Xloggc:<file>-XX:+PrintGcDateStamps-XX:+PrintHeapAtGC-XX:+PrintTenuringDistribution
ΠΠ½Π°Π»ΠΈΠ· Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°:
- PrintGCStats
- GChisto
- VisualVM / VisualGC
ΠΠ΅ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
ΠΠ±Π»Π°ΡΡΡ:: 00 Java ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
Π ΠΎΠ΄ΠΈΡΠ΅Π»Ρ:: Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ Java
ΠΡΡΠΎΡΠ½ΠΈΠΊ::
ΠΠ²ΡΠΎΡ::
Π‘ΠΎΠ·Π΄Π°Π½Π°:: 2023-11-06
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ
- Π‘Π±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π² Java.
- Π ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ ΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ΠΌΡΡΠΎΡΠ°.
- ΠΠ»Π΅ΠΊΡΠ΅ΠΉ Π¨ΠΈΠΏΠΈΠ»ΡΠ² β Shenandoah.
- ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
- ΠΠ°ΠΌΠ΅ΡΠΊΠΈ ΠΡΡΠ΅Π² ΠΠ»Π°Π΄
- ΠΡΡΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΊΠ½ΠΈΠ³Π° GC Handbook
ΠΠΎΡΠ΅ΡΠ½ΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ
- Concurrent Collection
- Concurrent Mark Sweep
- Copy Collector
- Epsilon GC
- Garbage First
- Generational Collection
- Incremental Collection
- Mark and Compact
- Mark and Sweep
- Parallel Collection
- Parallel Compacting Collector
- Parallel GC
- Serial GC
- Shenandoah GC
- StopTheWorld
- ZGC