Найти Π² Π”Π·Π΅Π½Π΅
Unity ΠΈ Π³Π΅ΠΉΠΌΠ΄Π΅Π² | aks2dio

🧠 Π£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти 🧠

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Π΄ΠΎΠΊΠ»Π°Π΄ с Unite 2025: How to find memory leaks with the Memory Profiler πŸ“Ί НС смотря Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π² Π΄ΠΎΠΊΠ»Π°Π΄Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ возмоТностям Memory Profiler. Π•ΡΡ‚ΡŒ информация ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΈΠΏΡ‹ памяти: Native, Managed, Graphics, Untracked. Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΎ СстСствСнный рост потрСблСния, ΠΏΡ€ΠΎ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти, ΠΏΡ€ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ Π΅Ρ‘ особСнности с GC Π² Unity (Ρ‚.Π΅. ΠΏΡ€ΠΎ Boehm ΠΈ CoreCLR). Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС, ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ дополняСт Π΄ΠΎΠΊΠ»Π°Π΄ Understanding Unity memory πŸ’¬ β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” Π•Ρ‰Ρ‘ Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ тСматичСскиС Π½Π°Ρ€Π΅Π·ΠΊΠΈ ΠΈΠ· старых Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ²:
ОглавлСниС

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Π΄ΠΎΠΊΠ»Π°Π΄ с Unite 2025: How to find memory leaks with the Memory Profiler πŸ“Ί

НС смотря Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π² Π΄ΠΎΠΊΠ»Π°Π΄Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ возмоТностям Memory Profiler.

Π•ΡΡ‚ΡŒ информация ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΈΠΏΡ‹ памяти: Native, Managed, Graphics, Untracked.

Π•ΡΡ‚ΡŒ ΠΏΡ€ΠΎ СстСствСнный рост потрСблСния, ΠΏΡ€ΠΎ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти, ΠΏΡ€ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ Π΅Ρ‘ особСнности с GC Π² Unity (Ρ‚.Π΅. ΠΏΡ€ΠΎ Boehm ΠΈ CoreCLR).

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС, ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ дополняСт Π΄ΠΎΠΊΠ»Π°Π΄ Understanding Unity memory πŸ’¬

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ

  • ЧастыС Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ.
  • Как слСдствиС, фрагмСнтация памяти.
  • Π£Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ссылок Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ дольшС, Ρ‡Π΅ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π΅ GC.
  • Π’ частности, созданиС/Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ассСтов Π±Π΅Π· ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ уничтоТСния.

Π§Ρ‚ΠΎ ΠΊ этому ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚

  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ своСврСмСнной очистки статичСских ссылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ отписок для событий ΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ².
  • ИспользованиС Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для подписки: ΠΈΠΌΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π±Π΅Π· костылСй ΠΈ пристроСк. И ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ этом Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ (ΠΏΡ€ΠΎ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ πŸ’¬).
  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° Dispose Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ это Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚.
  • НСявноС ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ²: ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ .material ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Ρ‚ΡŒ (Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ .sharedMaterial).
  • Π—Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ асинхронными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π±Π΅Π· CancellationToken ΠΈΠ»ΠΈ Π² Forget-Ρ€Π΅ΠΆΠΈΠΌΠ΅: ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎ Π΄ΠΎΠ»Π³ΠΎ ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ссылки Π½Π° Π΄Π°Π½Π½Ρ‹Π΅.

Как этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

  • Π‘Π΄Π΅Π»Π°Π» подписку β€” Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π·Π°Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈΠ» отписку. Π‘Ρ€Π°Π·Ρƒ, Π½Π΅ откладывая. Π­Ρ‚ΠΎ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅ (Π½Π΅ Π·Π°Π±ΡƒΠ΄Π΅ΡˆΡŒ), ΠΈ получится Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ Ρ‡ΠΈΡ‰Π΅, Ρ‚.ΠΊ. придётся сразу ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠΉ Ρ„ΠΈΡ‡ΠΈ.
  • Аналогично для Dispose.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ: Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ дСйствия Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… Ρ„Π°Π·Π°Ρ…. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ дополняСт ΠΏΡ€ΠΎΡˆΠ»Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ.
    НапримСр, Π² OnEnable β€” подписались, Π² OnDisable β€” ΠΎΡ‚ΠΏΠΈΡΠ°Π»ΠΈΡΡŒ. Π’ Start β€” ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, Π² OnDestroy β€” Π΄Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ. И Ρ‚.Π΄.
  • ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ лямбд для подписок: ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.
  • Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² статикС. Волько Π² случаях Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ нСобходимости ΠΈΠ»ΠΈ соотвСтствия Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ прилоТСния.
  • Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° статичСскими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. И своСврСмСнно ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.
  • Π’Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ созданныС Ρ€Π°Π½Π΅Π΅ ассСты, ΠΏΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ нСобходимости Π² Π½ΠΈΡ….
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CancellationToken ΠΈ/ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹ для асинхронных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² вмСсто частого создания ΠΈ уничтоТСния ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для сниТСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Π•Ρ‰Ρ‘ Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ тСматичСскиС Π½Π°Ρ€Π΅Π·ΠΊΠΈ ΠΈΠ· старых Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ²:

  • ΠŸΡ€ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ: YouTube | VK
  • ΠŸΡ€ΠΎ ΠΏΡƒΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: YouTube | VK