یکی از سوالهایی که تقریباً هر کسی بعد از ورود به دنیای لینوکس یا macOS باهاش روبهرو میشه اینه که چرا بلافاصله بعد از بوت، بخش زیادی از رم سیستم پر شده. خیلیها وقتی خروجی free، htop یا Activity Monitor رو میبینن، فکر میکنن یه مموری لیک وجود داره یا یه پردازش مخفی داره منابع سیستم رو میخوره. تو بیشتر مواقع، این اتفاق کاملاً طبیعیه و اتفاقاً نشون میده سیستمعامل داره دقیقاً همون کاری رو انجام میده که براش طراحی شده.
رم خالی یعنی رم هدررفته
منطق سیستمعاملهای مدرن، مخصوصاً لینوکس، اینه که رم خالی هیچ ارزشی نداره. وقتی شما هزینه کردید و سیستم با رم بالا خریدید، منطقی نیست بخش بزرگی از اون بدون استفاده بمونه.
به همین خاطر کرنل لینوکس از فضای آزاد رم برای File System Cache استفاده میکنه. یعنی فایلها و دادههایی که زیاد از روی دیسک خونده میشن رو داخل رم نگه میداره تا دفعه بعد لازم نباشه دوباره از SSD یا هارد خونده بشن. چون سرعت رم چندین برابر بیشتر از دیسکه، این کار باعث میشه برنامهها سریعتر اجرا بشن و سیستم واکنشپذیری خیلی بهتری داشته باشه.
اگر رم پر باشه، برنامههای جدید چطور اجرا میشن؟
اینجاست که مدیریت حافظه کرنل خودش رو نشون میده.
فضایی که برای کش استفاده شده، به هیچ وجه از برنامههای شما دزدیده نشده. هر زمان یک برنامه جدید به حافظه نیاز داشته باشه، کرنل در کسری از ثانیه بخشی از همین کش رو آزاد میکنه و در اختیار اون برنامه قرار میده. این فرآیند اونقدر سریع انجام میشه که معمولاً اصلاً متوجهش نمیشید.
پس پر بودن رم، تا زمانی که بخش زیادی از اون Cache باشه، نه تنها مشکل نیست، بلکه نشونه استفاده بهینه از منابع سیستمه.
خروجی دستور free رو چطور بخونیم؟
یکی از اشتباههای رایج اینه که همه فقط به ستون free نگاه میکنن.
در حالی که مهمترین عدد برای یک ادمین، ستون available هست.
- free فقط مقدار رمی رو نشون میده که کاملاً بلااستفاده مونده.
- available نشون میده اگر همین الان یک برنامه جدید اجرا بشه، سیستم بدون استفاده از Swap چقدر حافظه میتونه در اختیارش قرار بده.
این مقدار هم رم کاملاً آزاد رو شامل میشه و هم بخشی از Cache که هر لحظه قابل آزاد شدنه.
چه زمانی واقعاً باید نگران کمبود رم باشیم؟
پر بودن رم به تنهایی اصلاً نشونه مشکل نیست. فقط در چند حالت باید بررسی جدی انجام بدید:
- مقدار
availableبه شدت کم شده و به صفر نزدیک میشه. - سیستم دائماً در حال نوشتن و خوندن از Swap باشه؛ حالتی که بهش Thrashing گفته میشه و عملکرد سیستم رو نابود میکنه.
- در لاگهای کرنل پیامهای مربوط به OOM Killer (Out Of Memory Killer) دیده بشه و سیستم مجبور بشه پردازشها رو به اجبار متوقف کنه.
غیر از این موارد، دیدن اعداد بزرگ در قسمت Cache یا Buffers کاملاً طبیعیه و جای نگرانی نداره.
آیا باید Cache رو دستی خالی کنیم؟
بعضیها وقتی میبینن رم پر شده، وسوسه میشن Cache رو با استفاده از فایل /proc/sys/vm/drop_caches خالی کنن.
برای محیطهای Production این کار اصلاً توصیه نمیشه. چون فقط باعث میشه سیستم دوباره مجبور بشه تمام دادههای کششده رو از روی دیسک بخونه و در نتیجه عملکردش افت کنه.
تنها کاربرد منطقی این کار زمانی هست که در حال توسعه یا بنچمارک گرفتن باشید و بخواید اجرای برنامه رو در حالت Cold Start و بدون تأثیر Cache بررسی کنید.
وضعیت در macOS چطوره؟
از اونجایی که macOS بر پایه Darwin و BSD ساخته شده، مدیریت حافظه اون شباهت خیلی زیادی به لینوکس داره و تقریباً از همون فلسفه استفاده میکنه:
رم خالی یعنی رم هدررفته.
در نتیجه اگر ببینید بیشتر رم سیستم اشغال شده، لزوماً به معنی وجود مشکل نیست.
Compressed Memory؛ حرکت هوشمندانه macOS
یکی از قابلیتهای جالب macOS اینه که قبل از اینکه دادهها رو وارد Swap کنه، ابتدا اطلاعات غیرفعال داخل رم رو فشرده میکنه.
در واقع سیستم سعی میکنه بدون مراجعه به SSD فضای بیشتری داخل رم ایجاد کنه. این کار باعث میشه هم سرعت سیستم حفظ بشه و هم میزان نوشتن روی SSD کمتر بشه.
اگر وارد Activity Monitor بشید، مقدار این حافظه فشردهشده رو مقابل گزینه Compressed میبینید.
در macOS به چه چیزی نگاه کنیم؟
برخلاف چیزی که خیلیها فکر میکنن، معیار اصلی در مک مقدار رم مصرفشده نیست. مهمترین شاخص، نمودار Memory Pressure در پایین تب Memory هست.
- 🟢 سبز: همه چیز عالیه و سیستم در حال استفاده بهینه از رم و Cache هست.
- 🟡 زرد: سیستم از Compression و کمی Swap استفاده میکنه. هنوز جای نگرانی نیست اما به محدودیت منابع نزدیک شدید.
- 🔴 قرمز: سیستم وارد وضعیت بحرانی شده، فشار حافظه بالاست، Swap به شدت استفاده میشه و عملکرد دستگاه افت محسوسی پیدا میکنه.
فریب برنامههای RAM Cleaner رو نخورید
در macOS هم دقیقاً مثل لینوکس نباید از برنامههای RAM Cleaner یا Memory Optimizer استفاده کنید.
این برنامهها با اجبار، Cache سیستم رو خالی میکنن و شاید در ظاهر چند گیگابایت رم آزاد ببینید، اما در عمل فقط باعث میشن سیستم دوباره مجبور بشه تمام اون دادهها رو از روی SSD بخونه. نتیجه هم چیزی نیست جز افت سرعت، مصرف بیشتر باتری و درگیری اضافه پردازنده.
اگر بعد از بوت لینوکس یا macOS دیدید بیشتر رم سیستم پر شده، قبل از اینکه نگران مموری لیک یا پردازشهای مخفی بشید، اول ببینید این حافظه صرف Cache شده یا نه.
در لینوکس به ستون available نگاه کنید، نه free. در macOS هم فقط نمودار Memory Pressure ملاک تصمیمگیریه. تا وقتی این شاخصها وضعیت مناسبی دارن، پر بودن رم نه تنها ایراد نیست، بلکه نشون میده سیستمعامل داره از سختافزار شما به بهترین شکل ممکن استفاده میکنه.
پس دفعه بعد که دیدید لینوکس یا macOS تقریباً تمام رمتون رو مصرف کرده، به جای جنگیدن باهاش، فقط لبخند بزنید؛ سیستمعامل داره کارش رو میکنه.
برای مطالعه بیشتر درباره نحوه مدیریت حافظه در لینوکس، پیشنهاد میکنم سری به linuxatemyram.com بزنید.

فرض کنید مشخصات حافظه مکبوک شما به شکل زیر باشه. بیاید تکتک بخشها رو بررسی کنیم.
Physical Memory (حافظه فیزیکی)
مقدار: 18.00 GB
این عدد کل حافظه RAM نصبشده روی دستگاه رو نشون میده. سادهتر بخوایم بگیم، ظرفیت واقعی حافظه مک شماست و هیچ ارتباطی به میزان استفاده از اون نداره.
در این مثال یعنی مکبوک شما به صورت فیزیکی ۱۸ گیگابایت RAM داره.
Memory Used (حافظه استفادهشده)
مقدار: 13.17 GB
این بخش نشون میده در حال حاضر چه مقدار از RAM توسط سیستمعامل، برنامههای در حال اجرا و بخشهای مختلف مدیریت حافظه استفاده شده.
این عدد در واقع مجموع بخشهایی مثل App Memory، Wired Memory و Compressed Memory هست.
در این مثال یعنی از ۱۸ گیگابایت رم، حدود ۱۳.۱۷ گیگابایت در حال استفاده است.
Cached Files (فایلهای کششده)
مقدار: 4.54 GB
macOS فایلها و اطلاعاتی که اخیراً ازشون استفاده کردید یا احتمال میده دوباره بهشون نیاز پیدا کنید، داخل RAM نگه میداره تا دفعه بعد خیلی سریعتر در دسترس باشن.
نکته مهم اینه که این حافظه، حافظه اشغالشده واقعی محسوب نمیشه. اگر برنامهای به RAM بیشتری احتیاج داشته باشه، سیستم در کسری از ثانیه این بخش رو آزاد میکنه.
وجود چند گیگابایت Cached Files نشونه کمبود رم نیست؛ برعکس، یعنی macOS داره از حافظه شما به بهترین شکل استفاده میکنه.
در این مثال ۴.۵۴ گیگابایت از رم صرف کش کردن فایلها شده تا سرعت سیستم بیشتر بشه.
Swap Used (حافظه Swap)
مقدار: 0 bytes
اگر RAM پر بشه، سیستم بخشی از دادههای کماستفاده رو به SSD منتقل میکنه تا فضای بیشتری داخل رم آزاد بشه. به این فضا Swap گفته میشه.
چون سرعت SSD از RAM کمتره، استفاده زیاد از Swap معمولاً باعث افت عملکرد سیستم میشه.
در این مثال مقدار Swap برابر با صفر هست؛ یعنی سیستم هنوز کاملاً با حافظه RAM کار میکنه و نیازی به استفاده از حافظه مجازی پیدا نکرده. این دقیقاً بهترین وضعیت ممکنه.
App Memory (حافظه برنامهها)
مقدار: 7.87 GB
این قسمت میزان حافظهای رو نشون میده که برنامههای باز شما مصرف کردن؛ مثل مرورگر، فتوشاپ، VS Code، تلگرام یا هر نرمافزار دیگه.
در این مثال برنامههای در حال اجرا در مجموع ۷.۸۷ گیگابایت از RAM رو مصرف میکنن.
Wired Memory (حافظه رزروشده سیستم)
مقدار: 2.35 GB
این بخش از حافظه برای خود سیستمعامل رزرو شده و به هیچ عنوان قابل فشردهسازی یا انتقال به Swap نیست.
کرنل macOS برای اینکه همیشه پایدار بمونه، بخشی از RAM رو به صورت دائمی برای خودش نگه میداره.
در این مثال حدود ۲.۳۵ گیگابایت از حافظه به این بخش اختصاص پیدا کرده که کاملاً طبیعیه.
Compressed Memory (حافظه فشردهشده)
مقدار: 2.18 GB
یکی از قابلیتهای هوشمند macOS اینه که قبل از استفاده از Swap، دادههای کماستفاده داخل RAM رو فشرده میکنه.
این کار باعث میشه بدون مراجعه به SSD فضای بیشتری داخل حافظه ایجاد بشه و سرعت سیستم حفظ بشه.
در این مثال ۲.۱۸ گیگابایت از دادههای موجود در RAM فشرده شده تا فضای بیشتری برای برنامههای جدید فراهم بشه.
پس این وضعیت خوبه یا بد؟
به عبارت دیگه، اگر فقط به عدد Memory Used نگاه کنید ممکنه فکر کنید تقریباً تمام رم پر شده؛ اما واقعیت اینه که macOS داره از حافظه به بهترین شکل ممکن استفاده میکنه و هر زمان برنامهای به رم بیشتری احتیاج داشته باشه، میتونه خیلی سریع بخش Cache یا حافظه فشردهشده رو آزاد کنه.
پس اگر روی مکتون دیدید ۱۵ یا حتی ۱۷ گیگابایت از ۱۸ گیگابایت RAM در حال استفاده است ولی نمودار Memory Pressure همچنان سبزه و مقدار Swap Used نزدیک صفره، نه تنها جای نگرانی نیست، بلکه نشون میده macOS دقیقاً همون کاری رو انجام میده که برایش طراحی شده است.