پاک شدن حافظه رم با هر بار لود شدن مووی جدید

moonch

Member
سلام به همه.
من یکسری دکمه دارم که هر کدوم یک مووی رو (اکسترنال مووی) لود می کنه.اما هر دکمه قبل اینکه مووی جدید رو لود کنه باید قبلی رو حذف کنه . من این کار رو با این کدها انجام میدم.
کد:
nsStream.close();
    vidDisplay.clear();
    removeChild(vidDisplay);
اما مشکلم اینجاست که حافظه رم پاک نمیشه. چون با لود شدن مووی جدید به رمی که گرفته شده اضافه میشه و من ازینجا می فهمم که مووی قبلی از رم پاک نشده. باید چیکار کنم؟
 

BehrouzPc

پــــادشــاه فــلــــش
vidDisplay را مقدار null دهید

PHP:
vidDisplay=null;

از unloadAndStop استفاده کنید
 

moonch

Member
با اینکه آبجکتها رو null کردم باز هم مقدار رم با هر بار پخش 0.2 گیگ بالاتر میره.
 

BehrouzPc

پــــادشــاه فــلــــش
این که کلا جلوی استفاده از حافظه را بگیرید و آن را کامل خالی کنید ممکن نیست به هر حال مواردی موجود هست که باعث استفاده از حافظه می شود
درون فایل هایی که لود می شوند نیز می توانید مثلا تابعی در نظر بگیرید که در زمان از بین رفتن صدا زده شود و مدیریت بر حافظه آن مورد انجام شود
unloadAndStopy باعث می شود علاوه بر unload به صورت فوس gc هم انجام شود و توصیه می شود
موفق و پیروز باشید
 

++Hadi++

Active Member
البته اگه
رو بعد از نال کردنش صدا بزنید بد نیست... چون ماموریت System.gc اینه که تمام حافظه ای رو که در Heap، اشاره گری بهش اشاره نمی کنه رو پاک می کنه...
کلا تو کار با متغیر های نوع رفرنس (نه متغیر های نوع مقداری) باید بعد از null کردن اشاره گر، دستور System.gc رو اجرا کنید تا حافظه ای رو که هنوز پره و اشاره گری به اون رفرنس نشده رو پاک کن...البته تا جایی که می دونم فلش خاصیت Garbage Collection اتوماتیک نداره...بای...
 

BehrouzPc

پــــادشــاه فــلــــش
در مورد دستور System.cg فقط در دیباگر فلش پلیر جواب می دهد و در عمل فراخوانی آن هیچ تاثیری ندارد
موفق و پیروز باشید
 

++Hadi++

Active Member
مگه system.gc برای گاربیج کالکشن نیست؟؟؟ یعنی گاربیج فلش اتومات هست؟؟؟
 

BehrouzPc

پــــادشــاه فــلــــش
امکان فراخوانی هست ولی در عمل کاری انجام نمی دهد
فقط زمانی که unloadAndStop انجام می شود به صورت واقعی این کار انجام می شود
البته برای localConnection هم این موضوع مطرح بود

در کل فلش هر زمان که لازم باشد و در زمان فراخوانی توابعی که ذکر کردم این کار را انجام می دهد نمی توان با این دستور در عمل کاری انجام داد
بیشتر کار می بایست توسط بهینه نوشتن کد انجام شود و مدیریت کردن بر حافظه....

موفق و پیروز باشید
 

++Hadi++

Active Member
ولی وقتی در مورد رویداد ها و اشیا خیلی وسواس به خرج می دم، در سورس هایی که مدام عکس و ویدئو و صدا لود می شه، کم کم حجم برنامه تو رم بالا می ره.... نمی دونم طبیعی هست یا نه...
بهروز خودت می دونی که تو نوشتن کلاسها و ... به constructor و destructor خیلی وسواس دارم البته از نظر شخصی خودم تو این یک سال آخر برنامه نویسیم و دید OOP ام خیلی بهتر و استاندارد تر شده و زمین تا آسمون با یکی دو سال پیش فرق کرده ولی کماکان با این همه وسواس بازم کم کم حجم برنامه تو رم بالاتر می ره...البته فکر می کردم کش سیستم برا فایل های لود شده باشه...
 

BehrouzPc

پــــادشــاه فــلــــش
تا مقداری این موضوع طبیعی هست
اگر تا جایی که ممکن هست از GPU استفاده بشود این مورد خیلی خیلی بهینه و مناسب می شود
ولی اگر به درستی برای همه بخش های تابع destroy در نظر گرفته بشه این مورد به خیلی کم می رسه که ایده آل هر پروژه ای است
البته برای برنامه در رایانه محدودیت کمتری هست ولی برای برنامه هایی که برای دیگر دستگاه ها آماده می شود این مورد می بایست خیلی مورد نظر قرار بگیرد
در کل استفاده از امکان جدید فلش که مربوطه به استفاده از شتاب سخت افزاری هست به همراه بهینه سازی دیگر که خودت استاد هستی می تواند نتیجه یک برنامه با روند اجرایی و استفاده از منابع ایده آل برای ما داشته باشد.

موفق و پیروز باشید
 

جدیدترین ارسال ها

بالا