πŸ•Έ Как Π½Π°ΠΉΡ‚ΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти Π½Π° сайтах ΠΈ Π² Π²Π΅Π±-прилоТСниях

Π£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π΄ΠΎΠ»Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с вашим Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ – ΠΈΠ·-Π·Π° Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ этого ΠΈΠ·Π΄Π΅ΠΆΠ°Ρ‚ΡŒ.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ публикуСтся с сокращСниями, Π°Π²Ρ‚ΠΎΡ€ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ Rafal KuΔ‡.

Π’Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с вашим софтом – это ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для обСспСчСния Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ UX. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ показатСлями ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅: врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ HTTP-запросов ΠΈ врСмя Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°. Однако сами ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ – это лишь Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹.

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ±ΠΎ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅, Π° Π² ΠΈΠ΄Π΅Π°Π»Π΅, Π΄ΠΎ Π½Π΅Π³ΠΎ. Одной ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π±Π΅Π΄ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти.

Когда это происходит, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ постСпСнно замСдляСтся ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ становится Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ сразу Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ ΠΈ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

Для отслСТивания этих нСприятностСй ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Sematext Experience – инструмСнт ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС Π²Π΅Π±-прилоТСниями памяти, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ быстро ΠΈ эффСктивно ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим, ΠΊΠ°ΠΊ это дСлаСтся.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° памяти

Π£Ρ‚Π΅Ρ‡ΠΊΠ° памяти – это ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ управлСния распрСдСлСниСм памяти Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии. Она происходит, ΠΊΠΎΠ³Π΄Π° Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Ρ‚Π° большС Π½Π΅ Π½ΡƒΠΆΠ½Π°.

Π§Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ памяти: ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Π’Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ константы, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹. ВсС ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ памяти. Π’ JavaScript ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования высокого уровня, ΠΊΠΎΠ³Π΄Π° рСсурс большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ автоматичСской систСмой управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ сборщиком мусора.

ΠŸΠ°ΠΌΡΡ‚ΡŒ освобоТдаСтся, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° большС Π½Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π² ΠΊΠΎΠ΄Π΅. Однако Π±Ρ‹Π²Π°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π½Π° протяТСнии всСго ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° прилоТСния. Иногда это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π½ΠΎ Ссли ΠΌΡ‹ большС Π½Π΅ нуТдаСмся Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти всС Π΅Ρ‰Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π°, ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅.

Π’ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-прилоТСниях сущСствуСт нСсколько распространСнных ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ памяти. К Π½ΠΈΠΌ относятся:

  • Замыкания – Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ внутрСнняя функция Π½Π΅ позволяСт сборщику мусора ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ.
  • Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ – Ρ€Π°Π½Π΅Π΅ Π½Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ станут Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ освобоТдСны.
  • НСсвязанныС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ – массивы, ΠΌΠ°ΠΏΡ‹ ΠΈ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π²ΠΈΠ΄Π΅, Π½ΠΎ с Π±Π°Π³Π°ΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ памяти ΠΈΠ·-Π·Π° Π²Π΅Ρ‡Π½ΠΎΠ³ΠΎ хранСния ссылок. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСн Π½ΠΈΠΆΠ΅.
  • ΠžΡ‚ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ DOM – элСмСнт Document Object Model, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½ΠΎ Π½Π° Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ.
  • НСсвязанныС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ – Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ‡Π½ΠΎ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ памяти.

Как ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ памяти, создадим простоС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ повСдСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ e-commerce. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° отслСТиваСт ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΈ просмотрС ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°. КаТдоС ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ объявлСниС, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠ²Π°Ρ€ ΠΈΠ· поиска ΠΈ Ρ‚. Π΄. – всС помСщаСтся Π² массив. Код выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

function(product, timestamp, page) {
 visited.push({product, timestamp, page})
}

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ идСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Π² Π±Π΅ΠΊΠ΅Π½Π΄Π΅, пСриодичСски отправляя Π΄Π°Π½Π½Ρ‹Π΅. Однако Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ, ΠΌΡ‹ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΡˆΡ‚ΡƒΠΊΡƒ: послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ массив. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΈΠ· нашСго Π²Π΅Π±-прилоТСния. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ, Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ памяти.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Sematext ΠΈ Π΅Π³ΠΎ способности ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ использованиС памяти сайтом ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Sematext Experience с Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг – Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° использованиС Sematext Browser SDK для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ±Π»Π°ΠΊΠΎ Sematext.

Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ скрипт ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Ρ‚Π΅Π³ΠΎΠΌ </head>:

<script type="text/javascript">
 (function(e,r,n,t,s){var a=[];e[s]=function(){a.push(arguments)};e[s].queue=a; var o=[];var i=[];var c=true;var p=void 0;if(window.PerformanceObserver&& window.PerformanceObserver.supportedEntryTypes&&( PerformanceObserver.supportedEntryTypes.indexOf("longtask")>=0|| PerformanceObserver.supportedEntryTypes.indexOf("element")>=0)){ p=new PerformanceObserver(function(e){e.getEntries().forEach(function(e){ switch(e.entryType){case"element":i.push(e);break;case"longtask":o.push(e);break; default:break}})});p.observe({entryTypes:["longtask","element"]})}e[s+"lt"]={ longTasks:o,timingElements:i,inPageLoad:c,observer:p};if(t){var u=r.createElement(n); u.async=1;u.src=t;var f=r.getElementsByTagName(n)[0];f.parentNode.insertBefore(u,f)}})
 (window,document,"script","//cdn.sematext.com/experience.js","strum");
</script>

Π’Ρ‚ΠΎΡ€ΠΎΠΉ шаг зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° вашСго Π²Π΅Π±-прилоТСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° – Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Browser SDK, ΠΊΠ°ΠΊ Π΅ΠΌΡƒ сСбя Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ. НапримСр, для стандартного развСртывания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Π±-страниц Π²Ρ‹ Π±Ρ‹ использовали ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Ρ‚Π΅Π³ΠΎΠΌ </head> Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

<script type="text/javascript">
 strum('config', { token: '<token>', 'receiverUrl': 'https://rum-receiver.sematext.com' });
</script>

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, инструкции ΠΏΠΎ установкС прилоТСния Sematext Experience ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ шаги.

ВыявлСниС ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти

Зная Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² Sematext Experience. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρƒ ΠΎΠ± использовании памяти Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:

Если Π±Ρ‹ Ρƒ вас Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ смодСлированному Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΡƒΡ‚Π΅Ρ‡ΠΊΠΎΠΉ, Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ бСсконСчно растСт ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти. НС совсСм бСсконСчно: Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° использования памяти Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ привязана ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ значСниям. НапримСр, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

МоТно Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ скачкообразныС сСгмСнты, Π½ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π΅ использованиС памяти остаСтся ΠΌΠ΅ΠΆΠ΄Ρƒ максимумом ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠΌ ΠΈ Π½Π΅ растСт бСсконСчно. ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² нашСм гипотСтичСском ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ e-commerce это Π½Π΅ Ρ‚Π°ΠΊ. Если ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ просмотру ΠΎΠ΄Π½ΠΎΠΉ сСссии, Π²ΠΈΠ΄Π΅Π½ постоянный рост использования памяти с ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ 2 ΠœΠ‘ Π΄ΠΎ 12 ΠœΠ‘, ΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ падСния Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ΡƒΡ‚Π΅Ρ‡ΠΊΠ° памяти. Глядя Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ сСссии, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ страниц ΠΈ HTTP-запросы:

Π­Ρ‚ΠΎΡ‚ экран ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠ³ ошибок, показывая всС дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ API Π±Ρ‹Π»ΠΈ сдСланы, ΠΊΠ°ΠΊΠΈΠ΅ части прилоТСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ рСсурсы Π±Ρ‹Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹. ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ всС части ΠΊΠΎΠ΄Π°, ΠΈ послС дальнСйшСго исслСдования ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹

ВозмоТности измСрСния памяти Sematext Browser SDK зависят ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ API для прСдоставлСния связанных с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Chrome ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ» испытания Chrome Origin для Chrome 82-87. Начиная с Chrome 89 API Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ доступСн β€” это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ потрСбуСтся новСйший Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Google.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… инструмСнтов Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡƒΡ‚Π΅Ρ‡ΠΊΠΎΠΉ памяти довольно просто. ИмСнно для этой Ρ†Π΅Π»ΠΈ Π±Ρ‹Π» создан ΠΈ постоянно ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅Ρ‚ΡΡ Sematext Experience – ΠΎΠ½ прСдоставляСт Π²Π°ΠΌ комплСксноС, доступноС ΠΈ простоС Π² использовании Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
06 фСвраля 2017

15 прСкрасных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для Sublime Text

ВстрСчайтС список ΠΏΠ΅Ρ€Π²ΠΎΠΉ нСобходимости – 15 самых Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для Subli...