PDA

View Full Version : آزاد کردن حافظه پر شده Ram



mojtaba_z
سه شنبه 13 شهریور 1386, 15:18 عصر
سلام
توی برنامم از متغییر ها و آرایه هایی استفاده کردم . وقتی توی دلفی چندین بار برنامه رو اجرا میکنم و دارم تست میکنم توی یکی از این دفعات میبینم که بعد از اجرای برنامه وقتی برنامه را میبندم ، صفحه نمایش قفل میشه و باید یک مقدار صبر کنم تا وارد محیط دلفی بشه .
در اولین بار اجرا هیچ مشکلی نیست و سریع برنامه اجرا میشه و به محیط دلفی برمیگرده .من فکر کردم مشکل از پر شدن حافظه هستش .همینطوره یا خیر ؟
بعد از خارج شدن از برنامه ، چه اطلاعات یا متغییر هایی در حافظه می مانند ؟
و چطور میشه اون حافظه رو آزاد کرد ؟

Hamid.Kad
سه شنبه 13 شهریور 1386, 15:35 عصر
برگرداندن حافظه متغیرها به سیستم عامل به عهده خود کامپایلر هست.مگر در مواردی که متغیر رو بطور دینامیک براش فضا در نظر میگیرید.مثلاً با دستور new که برگرداندن فضای اونها به سیستم عامل به عهده خود شماست وگرنه اصطلاحاً زباله (garbage) تشکیل میشه. برنامه هایی هم هستند که با اجرای اونها میتونید فضای از دست رفته رو به os برگردونید. شاید کند شدن سرعت بسته شدن برنامه هم بدلیل اینه که کامپایلر میخواد اونها رو آزاد کنه.

amirrf
سه شنبه 13 شهریور 1386, 17:03 عصر
بعد از خارج شدن از برنامه ، چه اطلاعات یا متغییر هایی در حافظه می مانند ؟
و چطور میشه اون حافظه رو آزاد کرد ؟
بعد از خارج شدن از برنامه تمام حافظه‌ی مورد استفاده آن توسط سیستم عامل آزاد می‌شود و چیزی باقی نمی‌ماند، مگر حافظه‌ای که به شکل خاص گرفته شده باشد مثل حافظه‌ی اشتراکی. شما نیاز نیست در پایان کاری انجام دهید؛ مدیریت حافظه و آزادسازی منابعی که دیگر استفاده نمی‌شوند در طول اجرای برنامه حائز اهمیت است.

اگر برنامه شما حافظه‌ی زیادی مصرف می‌کند، در هنگام خروج با آزاد شدن حافظه‌ی اصلی مورد استفاده آن سیستم عامل ممکن است به انتقال صفحات حافظه نرم‌افزارهای فعال دیگر از حافظه مجازی به حافظه اصلی بپردازد و کندی مشاهده شده می‌تواند در این رابطه باشد.