У меня есть определенный код, который использует множество экземпляров подкласса SoftReference
. Я бы хотел проверить, что он работает правильно в случаях, когда все/только некоторые/ни одна из этих ссылок не поставлена для очистки в ReferenceQueue
. Для случая «нет» это довольно просто: создайте сильные ссылки на объекты, и мягкие ссылки гарантированно останутся. Однако, как я могу гарантировать, что они будут очищены? Как я понимаю, System.gc()
- это всего лишь запрос на запуск сборщика мусора, и даже если он действительно работает, он может решить не собирать все недостижимые объекты ...Как проверить код, основанный на SoftReference?
Также код очень критичен по производительности, поэтому он не является хорошая идея изменить его только для целей тестирования. (Добавление метода только для проверки, который не влияет на другие методы, прекрасен, но добавлять пути, которые используются только для тестирования другими методами, можно избежать).
Я предлагаю высмеять класс SoftReference – talex
@talex Они хотят на самом деле протестировать «SoftReference». Как бы издеваться над ним? –
Извините, я прошу интерпретировать вопрос. Теперь у меня есть другой вопрос: почему? – talex