Hay varios problemas diferentes en juego aquí. En primer lugar, el término "grupo constante" se refiere a una parte muy específica de los archivos de clase para literales numéricos y de cadena, o a las estructuras de datos generadas a partir de esta parte de los archivos de clase que residen en la JVM. La contraseña no se almacenará aquí a menos que sean parte de los archivos de la clase.
Sin embargo, algunos objetos String son de hecho almacenados y compartidos durante todo el programa a través de la interna de String. Cualquier literal de cadena se interna automáticamente, al igual que cualquier cadena en la que invoque el método de intern(). Sin embargo, a mi leal saber y entender, no hay otras cadenas almacenadas de esta forma, así que a menos que automáticamente internes las cadenas con tus propias contraseñas, no creo que debas preocuparte por esto.
Otro problema que debe tenerse en cuenta es que si no desea que las contraseñas residan en la memoria, deberá tener cuidado con la recolección de basura ya que una Cadena a la que ya no se hace referencia podría estar en la memoria. De manera similar, si usa ciertos métodos de cadenas como subcadenas que comparten representaciones de respaldo entre cadenas, puede conservar la cadena de contraseña completa después de que haya terminado de usarla.
Si lo que le preocupa es que otro código Java sea capaz de ver contraseñas antiguas que han sido internados o que todavía viven en la memoria, no necesita preocuparse. No hay forma de iterar o mirar los elementos del grupo de cadenas internas o de abrir una cadena para ver su matriz de respaldo.
Puede que no sea fácil encontrar esas cadenas del código, pero estarán en un volcado dinámico.Si estuviera tratando de llegar a ellos, trataría de disparar un heapdump y tratar de separar el archivo de volcado. – Ryan