דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. שחרור זכרון - קריאה לGC

שחרור זכרון - קריאה לGC

מתוזמן נעוץ נעול הועבר ארכיון code613m
8 פוסטים 5 כותבים 516 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

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

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

    תודה רבה!

    פורסם במקור בפורום CODE613 ב06/11/2016 15:45 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • S מנותק
      S מנותק
      softs
      כתב ב נערך לאחרונה על ידי
      #2

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

      פורסם במקור בפורום CODE613 ב06/11/2016 18:09 (+02:00)

      תגובה 1 תגובה אחרונה
      0
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #3

        תשאיר את זה לGC.
        רק שים לב שאינך משאיר שום הפניה חיה בשום מקום לאובייקט "מיותר".

        פורסם במקור בפורום CODE613 ב06/11/2016 18:48 (+02:00)

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        2
        • א מנותק
          א מנותק
          אהרן
          כתב ב נערך לאחרונה על ידי
          #4

          @דוד ל.ט.

          רק שים לב שאינך משאיר שום הפניה חיה בשום מקום לאובייקט "מיותר".

          יש דרך מקצועית לבדוק את זה, או רק "לשים לב"?

          פורסם במקור בפורום CODE613 ב06/11/2016 20:04 (+02:00)

          תגובה 1 תגובה אחרונה
          0
          • רחמיםר מנותק
            רחמיםר מנותק
            רחמים מורחק
            כתב ב נערך לאחרונה על ידי
            #5

            יש כלים רבים לזה, אני אוהב את JetBrains dotMemory

            פורסם במקור בפורום CODE613 ב06/11/2016 23:36 (+02:00)

            תגובה 1 תגובה אחרונה
            1
            • רחמיםר מנותק
              רחמיםר מנותק
              רחמים מורחק
              כתב ב נערך לאחרונה על ידי
              #6

              @avr416

              מאידך הרי תמיד שמשתמשים בדטה בייס יש את המתודה Dispose, לא?

              דטה בייס כתוב בדרך כלל בשפות כמו C C++ שאין להם GC.

              פורסם במקור בפורום CODE613 ב06/11/2016 23:38 (+02:00)

              תגובה 1 תגובה אחרונה
              1
              • A מנותק
                A מנותק
                avr416
                כתב ב נערך לאחרונה על ידי
                #7

                @softs

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

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

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

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

                פורסם במקור בפורום CODE613 ב07/11/2016 08:28 (+02:00)

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @אהרן

                  @דוד ל.ט.
                  רק שים לב שאינך משאיר שום הפניה חיה בשום מקום לאובייקט "מיותר".

                  יש דרך מקצועית לבדוק את זה, או רק "לשים לב"?

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

                  פורסם במקור בפורום CODE613 ב07/11/2016 09:22 (+02:00)

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  0

                  בא תתחבר לדף היומי!
                  • התחברות

                  • אין לך חשבון עדיין? הרשמה

                  • התחברו או הירשמו כדי לחפש.
                  • פוסט ראשון
                    פוסט אחרון
                  0
                  • דף הבית
                  • קטגוריות
                  • פוסטים אחרונים
                  • משתמשים
                  • חיפוש
                  • חוקי הפורום