نشت حافظه به وضعیتی گفته می شود که یک شیء در حافظه باقی می ماند، حتی اگر دیگر مورد نیاز نباشد.
به بیان دیگر مشکل نشت حافظه در فلاتر مواقعی میتواند رخ دهد که نگهداری مقادیر زیادی اطلاعات در حافظه باعث مصرف بیش اندازه آن میشود.
در فلاتر، ماشین مجازی زبان دارت VM مدیریت حافظه را بر عهده دارد و از یک garbage collector برای بازیابی خودکار حافظه استفاده نشده استفاده میکند.
با این حال، اگر اشیا به طور کافی از حافظه آزاد نشوند، ممکن است نشت حافظه رخ دهد که منجر به ماندگاری آنها در Heap و مصرف منابع غیر ضروری میشود.
این اتفاقات میتواند نتیجه نگهداری غیر اصولی اطلاعات کش, حذف اطلاعات به شکل نامناسب از حافظه, بی توجهی به پاک کردن Listenerها و موارد دیگر باشد.
مدیریت نادرست استریم ها و رویدادهای asynchronous در صورتی که subscriptions یک استریم به درستی بسته نشود در پس زمینه به حیات خود ادامه میدهد و باعث نشت حافظه میشود.
مورد دیگر که میتواند در این قضیه تاثیر داشته باشد استفاده از تصاویر و فایل های ویدیویی با حجم بالا بدون آزاد سازی صحیح حافظه میباشد.
برای جلوگیری از وقوع این اتفاق شما به عنوان برنامه نویس فلاتر و توسعه دهنده اپلیکیشن مجموعه اقداماتی را میتوانید انجام دهید.
حذف صحیح اشیا
همواره اشیا را زمانی که دیگر مورد نیاز نیستند با استفاده از متد dispose در ویجت حذف کنید.
این کار اطمینان میدهد که هرگونه منابع مرتبط با شیء آزاد شده و از مصرف غیرضروری حافظه جلوگیری میشود.
استفاده از صحیح از استریم
برای جلوگیری از نشت حافظه ناشی از استریم ها، همواره زمانی که دیگر به Stream نیازی نیست، اشتراک آن را لغو کنید. این کار اطمینان میدهد که استریم در پسزمینه فعال باقی نمانده و حافظه را مصرف نمیکند.
استفاده از صحیح از مدیا
برای جلوگیری از نشت حافظه ناشی از تصاویر و ویدئوی های بزرگ، از تکنیکهای کارآمد برای بارگذاری آنها استفاده کنید.
یکی از این تکنیکها استفاده از بسته “flutter_cache_manager” است که به ذخیرهسازی تصاویر و ویدئوها در حافظه کش کمک میکند و میزان حافظه مصرفی آنها را کاهش میدهد.