Мне было интересно, может ли кто-нибудь сказать мне, когда объект Java Class
собирает мусор.Мой вариант использования - это кеш (Map<Class<?>, Class<?>[]>
), который содержит иерархию классов объектов.
Например:
(короткая) иерархия String.class
будет (по убыванию):String.class
-> Object.class
.Допустимая запись кэша для этого типа будет [KEY: String.class, VALUE: {String.class, Object.class}]
.
Полагаю, String.class
является плохим примером, поскольку класс String.class должен собираться мусором ....
Iнужен этот кеш для сериализации проекта, над которым я работаю.При написании объекта моей системе нужна иерархия этого объекта для выбора правильных «кодеков (сериализаторов)».Сбор иерархии для каждого объекта вызовет некоторые издержки, которые не являются необходимыми.Но тогда я подумал про утечки памяти.Вероятно, объекты классов могут быть собраны мусором (чего я не знаю), который не будет работать при использовании сильных ссылок в моем кэше.
Как вы думаете, WeakHashMap будет достаточно?Или я должен использовать что-то вроде:
Map<WeakReference<Class<?>>, WeakReference<Class<?>>[]> ?
Что вы думаете об этой проблеме?