שאלה ב-JAVA על gc, seralization
שלום, כתבתי אפליקציה ששולחת אוביקטים דרך socket. הזכרון של האפליקציה מטפס בצורה מדהימה ביחס ישר לגודל האוביקט שאני מעביר. כדי לפתור את הבעיה נסיתי לקרוא את האוביקט ואז את המשתנה שמחזיק אותו להשוות ל-null. כמו כן קראתי ל-System.gc אך ללא הועיל. עוד דבר מוזר הוא שהמשתנה שמחזיק את האוביקט הנקרא הוא משתנה מקומי בפונקציה שנקראת כל פעם מחדש, כך שהוא מת ואין אף אחד שמצביע עליו בסוף הפונקציה. יותר מזה הוספתי לאוביקט שאני מעביר finalization ששולח משהו להדפסה. כל ההדפסות מגיעות רק שאני עוצר את התוכנית! בתוכנית סתמית שלא משתמשת ב-serialization להעביר אוביקטים דרך socket ה- gc נראה עובד נהדר. מדוע? למה? ואיך ניתן לקרוא ל-gc לעבוד הרגע??? הצעות?
שלום, כתבתי אפליקציה ששולחת אוביקטים דרך socket. הזכרון של האפליקציה מטפס בצורה מדהימה ביחס ישר לגודל האוביקט שאני מעביר. כדי לפתור את הבעיה נסיתי לקרוא את האוביקט ואז את המשתנה שמחזיק אותו להשוות ל-null. כמו כן קראתי ל-System.gc אך ללא הועיל. עוד דבר מוזר הוא שהמשתנה שמחזיק את האוביקט הנקרא הוא משתנה מקומי בפונקציה שנקראת כל פעם מחדש, כך שהוא מת ואין אף אחד שמצביע עליו בסוף הפונקציה. יותר מזה הוספתי לאוביקט שאני מעביר finalization ששולח משהו להדפסה. כל ההדפסות מגיעות רק שאני עוצר את התוכנית! בתוכנית סתמית שלא משתמשת ב-serialization להעביר אוביקטים דרך socket ה- gc נראה עובד נהדר. מדוע? למה? ואיך ניתן לקרוא ל-gc לעבוד הרגע??? הצעות?