- زباله جمع آوری چیست؟
- کی روش نامیده می شود
finalize
؟ - اگر
finalize
یک استثنا در یک متد رخ دهد چه اتفاقی می افتد؟ - چه اتفاقی افتاده است
SoftReference
؟ - چه اتفاقی افتاده است
WeakReference
؟ - چه اتفاقی افتاده است
PhantomReference
؟ - چگونه کار می کند
WeakHashMap
؟ کجا استفاده می شود؟ - چرا باید یک صف را به سازنده منتقل کنید
PhantomReference
؟ - چرا به یک لاگر نیاز دارید؟
- چه تنظیمات لاگر را می دانید؟
-
این مکانیسمی برای از بین بردن اشیاء غیر ضروری است. اشیاء غیر ضروری، اشیاء بلااستفاده هستند. دو راه برای یافتن چنین اشیایی وجود دارد: شمارش مرجع و ردیابی. در حالت اول، هر شی با متغیری همراه است که تعداد ارجاعات به این شی را ذخیره می کند. اگر این عدد به صفر برسد، جسم مرده در نظر گرفته می شود. در حالت دوم، جمعآورنده زباله ارجاعات شیء را از نقاط ریشه تا انتها (تا مقدار صفر) دنبال میکند و کل درخت را طی میکند. اشیایی که نمی تواند از ریشه به آنها برسد مرده در نظر گرفته می شوند. نقاط ریشه همه رشتههای فعال، متد اصلی، آرگومانهای متد
main()
و همچنین همه متغیرهای ثابت کلاسی هستند که متد در آن قرار داردmain()
.تعیین اینکه کدام اشیاء واجد شرایط تخریب هستند، تنها اولین بخش از کار زباله گرد است. قسمت دوم در واقع حذف آنها و کار با حافظه است. در اینجا از یک رویکرد ترکیبی استفاده شده است. تمام حافظه موجود برای اشیاء به سه ناحیه تقسیم می شود: ناحیه اشیاء جوان، ناحیه اشیاء قدیمی و ناحیه اشیاء دائمی (اینها کلاس ها، ابرداده ها، رشته های داخلی و غیره هستند). منطقه اول به سه زیر ناحیه دیگر تقسیم می شود: Eden و فضای بازمانده 1 و 2. Eden تمام اشیاء تازه ایجاد شده را ذخیره می کند. دو منطقه باقی مانده اشیایی را ذخیره می کنند که از آخرین جمع آوری زباله جان سالم به در می برند. زباله جمع کن با کل این منطقه (محدوده اشیاء جوان) به شرح زیر کار می کند. در طول جمع آوری زباله بعدی، او اشیاء زنده را در منطقه عدن پیدا می کند و آنها را در منطقه دوم بازمانده کپی می کند. پس از این، او همچنین به دنبال اشیای زنده در منطقه اول می گردد و آنها را یا در ناحیه دوم بازماندگان، یا اگر قبلاً به اندازه کافی «قدیمی» هستند، در منطقه نسل قدیم کپی می کند. پس از آن، او منطقه عدن و اولین منطقه بازمانده را پاکسازی می کند. در مرحله بعد، او منطقه دوم بازماندگان را اولین منطقه می داند. و بس، جمع آوری زباله برای این منطقه به پایان می رسد.
Для второй области сборка мусора идёт несколько по-другому. Там есть одна большая область, она ни на что не делится, но сборщик мусора все живые an objectы в ней во время своей работы перемещает в начало области. Соответственно, вторая часть области будет состоять только из пустого пространства и мёртвых an objectов. После этого сборщик мусора завершает свою работу.
-
Перед уничтожение an object сборщиком мусора. Также можно вручную запустить вызовы этого метода у всех недостижимых an objectов, для этого надо вызвать метод
System.runFinalization()
orRuntime.getRuntime().runFinalization()
. -
Это исключение будет проигнорировано, и произойдёт выход из метода.
-
SoftReference
переводится How "мягкая link". Эта link на an object, но более слабая, чем обычная link (StrongReference). Объекты, на которые сущесвуют только мягкие ссылки, называются мягcodeостижимыми. Такие an objectы не уничтожаются в обычном случае. Но если у JVM закочиналась память, то сборщик мусоры удаляет все такие an objectы. -
WeakReference
— это так называемая слабая link на an object. Она ещё слабее Soft-ссылки. Все an objectы, на которые существуют только слабые ссылки, будут удалены при ближайщей сборке мусора. -
PhantomReference
— это самая слабая link. Механизм работы с такими link запускается только если на an object нет больше ниHowих других ссылок. Призрачные ссылки используются для сложной proceduresы удаления an object. Это может быть необходимо, если an object делает что за граница Java-машины, например, вызывает низкоуровневые функции ОС or пишет своё состояние в файл, or делает ещё что-то важное и сложное.Механизм работы с такими linkми следующий. Если на an object не осталось больше ниHowих других ссылок, и у него переопределён метода
finalize()
, то этот метода будет вызван во время ближащей сборки мусора. Если же этот метод не переопределён, то этот an object пропускает текущую сборку мусора, и попадает только в следующую. Во время этой (следующей) сборки мусора данный an object помещается в очередь призрачных an objectов, из которой будет удалён, когда у его призрачной ссылки вызовут методclear()
. Также стоит отметить, что методаget()
у призрачной link всегда возвращает null (в отличие от двух других несильных ссылок, у которых он возвращаетnull
, только если an object уже уничтожен). -
WeakHashMap
— этоHashMap
, у которого ключами являются слабые ссылки. Поэтому, если во время ближайшей сборки мусора будет обнаружено, что на an object существует только link вWeakHashMap
, то изWeakHashMap
будет удалена вся пара "ключ-meaning", связанная с этим an objectом.В связи с этим данная коллекция может быть использована для хранения Howой-то дополнительной, не очень важной информации об an objectе. Также её удобно использоваться для хранения Howой-то временной информации (которая нужная только в рамках данной операции).
-
Эта очередь используется для отслеживания того, что an object больше не нужен. Может быть использовано для закрытия ресурсов, открытых данным an objectом (например, удаление созданных файлов).
-
برای ذخیره اطلاعات مربوط به رفتار برنامه و همچنین برخی از وضعیت های آن به یک لاگر نیاز است. می تواند برای اشکال زدایی و شناسایی خطاها و خرابی های برنامه استفاده شود. لاگر همچنین به توسعه دهنده اجازه می دهد تا در حین اجرای برنامه بازخورد خود را دریافت کند. علاوه بر این، در صورت خرابی های مهم، لاگر می تواند به سرعت افراد مناسب (به عنوان مثال، توسعه دهندگان، مشتریان، مدیران پروژه، پشتیبانی فنی و غیره) را در مورد این خرابی ها مطلع کند.
-
هنگام تنظیم گزارش، می توانید موارد زیر را مشخص کنید:
- مکانی که اطلاعات در آن نوشته می شود (فایل، کنسول، پایگاه داده، شبکه و غیره)
- پیام های چه سطحی ضبط خواهند شد
- نوع ورودی های گزارش
- برای فایلها میتوانید تعیین کنید: مسیر فایل و فهرست، اندازه فایل، تعداد فایلها
- برای هر بسته جداگانه سطح پیام های خود را که در گزارش نوشته می شود مشخص کنید
GO TO FULL VERSION