Установка нулевых объектов для GC против WeakReference в Java - PullRequest
0 голосов
/ 23 мая 2018

Я немного смущен тем, что на самом деле делает WeakReference.Из того, что я прочитал, позвольте мне объяснить:

Пример 1:

Integer prime = 1;  
WeakReference<Integer> soft = new WeakReference<Integer>(prime); 
prime = null;

В следующем цикле gc будет собрано простое число.Все идет нормально.Но если я сделаю это без WeakReference:

Integer prime = 1;  
prime = null;

Разве это не то же самое?Премьер будет собран снова, потому что нет ссылки.

1 Ответ

0 голосов
/ 23 мая 2018

Ваш пример не особенно хорош.Это, конечно, не правильный вариант использования для WeakReference.Для начала, Integer 1 всегда будет присутствовать в Integer кэше , поэтому всегда будет иметь к нему сильную ссылку.

A WeakReference будет содержать ссылку наобъект, пока что-то еще содержит (сильную) ссылку на него.Представьте себе особенно непостоянного человека .Им понравится ТВ-шоу / песня / фильм ... но только если это понравится кому-то еще.Как только все остальные перестанут любить эту вещь, они тоже быстро потеряют интерес.


Также будьте осторожны:

WeakReference<Integer> soft

WeakReference и SoftReference равны тесно связаны, но не являются взаимозаменяемыми .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...