פרגמנטציה מתרחשת גם בזיכרון המערכת (RAM). תהליכי יישומים ומערכת מקצים ומשתמשים בזיכרון בלוקים לא רציפים, מכיוון שמשתמשים באוגרי זיכרון קיימים ועוזרים בהם שימוש חוזר.
האם ראם יכול להיות מקוטע?
הדפי זיכרון יוצר פיצול פנימי מכיוון שתוקצה מסגרת עמוד שלמה בין אם יש צורך באחסון רב כל כך ובין אם לאו. בשל הכללים המסדירים הקצאת זיכרון, לפעמים מוקצה יותר זיכרון מחשב מהנדרש.
מה גורם לפיצול זיכרון?
פיצול זיכרון הוא כאשר רוב הזיכרון שלך מוקצה במספר רב של בלוקים לא רציפים, או נתחים - מה שמשאיר אחוז טוב מסך הזיכרון שלך לא מוקצה, אך בלתי שמיש עבור רוב התרחישים האופייניים. כתוצאה מכך יוצאים חריגים בזיכרון, או שגיאות הקצאה (כלומר, malloc מחזירה null).
האם פיצול הזיכרון גרוע?
באופן כללי תכנות c++ אין בעיה עם פיצול זיכרון. אתה תמיד רואה את הזיכרון הווירטואלי ואתה תמיד מקצה נתחי זיכרון וירטואלי רציפים. הדבר היחיד שאתה יכול לשים לב שהנתחים שהוקצו ברצף אינם בהכרח צמודים בזיכרון.
איך מונעים פיצול זיכרון?
אם אתה יכול לבודד בדיוק את המקומות שבהם אתה צפוי להקצות בלוקים גדולים, אתה יכול (ב-Windows) ישירות להתקשר ל-VirtualAlloc במקום לעבור דרך מנהל הזיכרון. זה ימנעפיצול בתוך מנהל הזיכרון הרגיל.