Примитивные данные (byte, char, int, double) и их массивы (byte [], ...) стираются путем записи в них нового случайного контента.
Данные объекта необходимо очистить, переписав их примитивные свойства; установка переменной в null просто делает объект доступным для GC, но не сразу мертвым. Дамп виртуальной машины будет содержать их на всеобщее обозрение.
Неизменяемые данные, такие как String, не могут быть перезаписаны никаким образом. Любая модификация просто делает копию. Вы должны избегать хранения конфиденциальных данных в таких объектах.
P.S. Если мы говорим о паролях, лучше использовать криптостойкие хеш-функции (MD5, SHA1, ...) и никогда не работать с паролями в открытом виде.