PracticU

תרגילים על Garbage Collector

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מתקדם - #Advanced .NET C › תרגילים על Garbage Collector
מילון מושגים:
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
הערה - טקסט בקוד שמסביר אותו לבני אדם ואינו מבוצע על ידי המחשב.
תהליכון - יחידת ביצוע בתוך תהליך, המאפשרת להריץ כמה מהלכים במקביל ולחלוק את אותו זיכרון.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).

תרגילים על Garbage Collector
התרגילים האלה בודקים איך ה-Garbage Collector מתנהג בפועל: דורות, ספירת איסופים, destructor, מספרי threads והזיכרון לאובייקטים גדולים.
התרגילים
1. Generation: צרו אובייקט והציגו את הדור שלו. קראו ל-GC.Collect שש פעמים והציגו את הדור אחרי כל קריאה. אחר כך הכניסו null לאובייקט ובדקו אם עדיין אפשר להציג את הדור.
2. זיכרון וספירה: הציגו כמה זיכרון בשימוש ה-GC וכמה פעמים בוצע איסוף. קראו ל-Collect כמה פעמים והשוו את הספירה למספר הקריאות. אם אינכם יודעים איך, חפשו בגוגל.
3. Destructor: מחלקה Test עם destructor שמדפיס הודעה. ב-Main יוצרים אובייקט, מציבים null ומריצים Console.ReadLine. ה-destructor רץ רק בסיום התוכנית, ולכן יש למצוא מה לכתוב במקום ההערות כדי שירוץ לפני ה-ReadLine.
4. ManagedThreadId: ב-Main הערך של Thread.CurrentThread.ManagedThreadId הוא 1, ובתוך thread שיצרתם 3. מספר 2 אמור להיות שייך ל-GC. כיצד אפשר להוכיח זאת?
5. Large Object Heap: מערך byte בגודל 80,000 נמצא בדור 0. במערך בגודל 85,000 הדור שונה. חפשו את המונח large object heap והסבירו מה קרה.
אחרי התרגילים תוכלו להסביר מתי destructor רץ, איפה נשמרים אובייקטים גדולים ואיך לבדוק פעילות GC.
השיעור הבא בקורס: Managing Resources - חלק 1

פרקי ההרצאה: תרגילים על Garbage Collector

  1. 00:00

    הצגת ה-Generation של אובייקט

  2. 00:42

    ניטור פעולות הגארבג' קולקטור

  3. 01:18

    דיסטרקטור וזמן הריצה

  4. 01:55

    הצגת ManagedThreadId

תמלול ההרצאה: תרגילים על Garbage Collector

הטקסט המלא של הדקות הראשונות בהרצאה «תרגילים על Garbage Collector» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    גילים בנושא הגארבג' קולקטור. עצרו אובייקט מטיפוס נתונים כלשהו, לא משנה איזה, והציגו את הג'נריישן שלו. בצעו קריאה לפונקציה קולקט של הגארבג' קולקטור שש פעמים, ובכל פעם תציגו את הג'נריישן של אותו אובייקט אחרי כל קריאה.

  2. 00:22

    לאחר מכן הכניסו נ"ל לתוך האובייקט שלכם, האם אתם עכשיו מסוגלים להציג את הג'נריישן שלו. הציגו כמה זיכרון נמצא בשימוש על ידי הגרבץ' קולקטור.

  3. 00:34

    הציגו כמה פעמים הגרבץ' קולקטור ביצע פעולה או ביצע קולקט של הזיכרון. בצעו קריאה לקולקט של הגרבץ' קולקטור כמה פעמים והציגו שוב כמה פעמים הגרבץ' קולקטור ביצע קולקט.

  4. 00:49

    בדקו האם זה מסתדר עם מספר הקריאות שעשיתם. אם אתם לא יודעים איך עושים את זה פשוט חפשו בגוגל איך ניתן לדעת כמה זיכרון הגארבץ' קולקטור משתמש, ואיך ניתן לדעת כמה פעמים הגארבץ' קולקטור ביצע ניקוי של הזיכרון.

  5. 01:05

    יצרו מחלקה בשם test שמכילה דיסטרקטור. בתוך הדיסטרקטור הציגו איזושהי הודעה על הקונסול. במיין כתבו את הקוד הבא: test t=new test, t=null, איזשהם הערה או הערות, ו-consol.readline.

  6. 01:23

    אם אתם מריצים את התוכנית הזאת, אתם יכולים לראות שהדיסטרקטור לא יתבצע לפני הקונסול רידליין, אלא רק אחרי הקונסול רידליין כאשר התוכנית מסתיימת.

  7. 01:33

    מה אתם יכולים לעשות במקום ההערות בכדי שהדיסטרקטור כן יתבצע לפני הקונסול רידליין? צרו קונסול אפליקיישן ובתוכו, בתוך המיין שלו, הציגו את הפרופרטי הבא:

  8. 01:48

    thread.currentthread.managedthreadid. המספר אמור להיות 1. צרו thread והפעילו בעזרתו איזושהי פונקציה. בתוך הפונקציה, שוב פעם, תציגו את הפרופרטי הזה.

לקורס המלא: קורס תכנות מתקדם ב‑#C ודוט-נט

ההרצאה הקודמת: Garbage Collector

ההרצאה הבאה: Managing Resources - חלק 1

הרצאות קשורות מקורסים אחרים

  • הבדלים בין Dispose - לבין Garbage Collector
  • תרגילים 1-3
  • תרגילים על מטריצות בג'אווה
  • תרגילים מסכמים בנושא עיצוב

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס WCF - תקשורת למתקדמים בדוט-נט