2GB bellek uyarısı: ilk iki çözüm işe yaramadı, üçüncüsü halletti
One Life adlı tarayıcı oyunu Playgama portalına yüklendiğinde, analizör 2GB bellek kullanımı uyarısı verdi. Geliştirici ekibi hızlı çözüm bulmak için 43 dakikada üç pull request gönderdi, ama ilk ikisi hiçbir işe yaramadı.
İlk çözümde (11:10) dünya haritasını çizen canvas'ı kendi compositing katmanına taşıdılar. İkinci denemede (11:21) canvas'ı yazılım tabanlı (CPU) çizime geçirdiler. İkisi de işe yaramadı. Üçüncü PR'de (11:53) logonun CSS'sini değiştirdiler: `position: absolute` eklediler. Uyarı kayboldu.
Gerçek sorun neydi? Playgama'nın analizörü sayfayı GPU'suz headless Chrome'da çalıştırıyor. Logo, dünya canvas'ının üstünde duruyordu. Bu iki öğenin birlikte olması main thread'i ilk paint'te bloke ediyordu ve bellek 2GB'ı geçiyordu. Logo'yu position: absolute ile layout akışından çıkarmak, rendering sorununu ortadan kaldırdı.
Bu durum yazılım geliştirmede sık karşılaşılan bir durum: sorunu hızlı çözmek istediğimizde, ilk görünen yer (canvas, GPU) suçlu sanılıyor. Oysa sorun çoğu zaman CSS veya layout ile ilgili. Headless browser'da test etmek, gerçek kullanıcı ortamından çok farklı davranış gösterebilir. Tam hikayeyi okuyabilirsin.
Önemli çıkarım: performans sorunlarında hızlı çözüm arayışı yanıltıcı olabilir. Sorunun kökünü anlamadan çözüm yapmak, sadece zaman kaybettirir.
0 yorum