Вообще говоря, у вас нет сильного контроля над тем, когда объект специально уничтожается. Любой объект имеет право на сборку мусора, когда на него больше нет (сильной) ссылки - но нет никаких гарантий относительно того, когда он будет собираться мусором или фактически, когда это будет. Даже вызов System.gc () или Runtime.gc () не дает никаких гарантий о том, что на самом деле что-то делается, это всего лишь подсказка JVM, что она может захотеть рассмотреть сбор мусора сейчас. Я полагаю, что единственная гарантия, которую вы получите, заключается в том, что если выдается ошибка OutOfMemoryError, все потенциальные сборки мусора были выполнены до того, как была выдана ошибка.
Здесь есть последствия для обработки конфиденциальной информации, такой как пароли. Поскольку строки не могут быть очищены программно, в идеале вы не хотите хранить пароль как таковой. Если вместо этого вы сохраните его как массив символов, вы можете использовать Arrays.fill(' ')
для перезаписи пароля и гарантии, что с этого момента он больше не будет храниться в памяти.
Вернемся к теме - вы правы, что обе операции сделают объект пригодным для сбора мусора, если на него не ссылаются в другом месте. Collection.clear () действительно является самым быстрым способом удаления ссылок на все объекты в коллекции одновременно.