- Zibil ýygnamak näme?
- Usul haçan diýilýär
finalize
? finalize
Usulda kadadan çykma ýüze çyksa näme bolýar ?- Name boldy
SoftReference
? - Name boldy
WeakReference
? - Name boldy
PhantomReference
? - Bu nähili işleýär
WeakHashMap
? Nirede ulanylýar? - Näme üçin konstruktora nobat bermeli
PhantomReference
? - Näme üçin ýazyjy gerek?
- Haýsy ýazgy sazlamalaryny bilýärsiňiz?
-
Gereksiz zatlary ýok etmegiň mehanizmi. Gerek däl zatlar ulanylmaýan zatlar. Şeýle zatlary tapmagyň iki usuly bar: salgylanma sanamak we gözlemek. Birinji ýagdaýda, her bir obýekt bu obýekte salgylanmalaryň sanyny saklaýan üýtgeýji bilen baglanyşyklydyr. Bu san nola düşse, obýekt öli hasaplanýar. Ikinji ýagdaýda, zibil ýygnaýjy, bu agajyň üstünden geçip, kök nokatlaryndan ahyryna çenli (null bahasyna çenli) obýekt salgylanmalaryna eýerýär. Kök nokatlaryndan baryp bilmeýän zatlar öli hasaplanýar. Kök nokatlarynyň hemmesi işjeň sapaklar, esasy usul, usulyň argumentleri
main()
, şeýle hem usulyň ýerleşýän synpynyň ähli statiki üýtgeýjilerimain()
.Определение an objectов, пригодных к уничтожению - это только первая часть работы сборщика мусора. Вторая часть - это собственно их удаление и работа с памятью. Здесь используется гибридный подход. Вся доступная для an objectов память разделяется на три области: область молодых an objectов, область старых an objectов и область перманентных an objectов (это классы, метаданные, интернированные строки и т.д.). Первая область разделяется ещё на три подобласти: на Eden и suvivor space 1 и 2. В Eden хранятся все только созданные an objectы. В остальных двух зонах хранятся an objectы, выживщие после последней сборки мусора. Сборщик мусора работает со всей этой областью (областью молодых an objectов) следующим образом. Во время очередной сборки мусора он находит живые an objectы в области Eden и копирует их во вторую область выживших. После этого он в первой области также ищет живые an objectы и копирует их либо в вторую область выживших, либо, если они уже достаточно "старые" - область старого поколения. После этого он очищает область 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ом (например, удаление созданных файлов).
-
Логгер нужен для сохранения информации о поведении программы, а также некоторых её состояниях. Может быть использован для отладки и выявления ошибок в работе программы и сбоев. Также логгер является позволяет разработчику получать обратную связь от своей программы во время её работы. Кроме того, при критических сбоях логгер может оперативно оповещать нужных людей (например, разработчиков, клиентов, менеджеров проектов, службу техподдержки и т.д.) об этих сбоях.
-
При настройки логгрирования можно указать следующие вещи:
- место, куда будет писаться информация (файл, консоль, база данных, сеть и т.д.)
- messages Howого уровня будут записываться
- вид записей в логе
- для файлов можно указать: way to файлу и каталогу, размер файлов, количество файлов
- указать для каждого отдельного пакета свой уровень сообщений, которые будут писаться в лог
GO TO FULL VERSION