关于Java字符串常量池

这是关于Java字符串常量池.在我的一个程序中,我正在解密数据库的密码并将其存储在字符串中.我听说Java Strings将存储在一个常量池中,它们不会被VM重新启动或加载String Quits的ClassLoader破坏.

如果是这种情况,我的密码将存储在字符串池中.我非常关心这个问题.有没有其他方法来摧毁这些文字或我能做的任何其他事情.

请在此建议,

问候,
艳阳天.

解决方法:

这里有几个不同的问题.首先,术语“常量池”是指字符串和数字文字的类文件的非常特定的部分,或者是从驻留在JVM中的这部分类文件生成的数据结构.密码不会存储在此处,除非它们是类文件的一部分.

但是,一些String对象确实通过String internment存储并在整个程序*享.任何字符串文字都会自动实现,就像调用intern()方法的任何字符串一样.据我所知,虽然没有其他字符串以这种方式存储,所以除非你自动实习自己输入密码的字符串,否则我认为你不必担心这一点.

另一个需要注意的问题是,如果您不希望密码驻​​留在内存中,则可能需要注意垃圾收集,因为不再引用的String仍可能在内存中.类似地,如果您使用某些字符串方法(如子字符串)共享字符串之间的后备表示,则在完成使用后可以保留完整的密码字符串.

如果您担心的是其他Java代码能够看到已经实现的旧密码或者仍然存在于内存中的旧密码,那么您无需担心.无法迭代或查看实习字符串池的元素,或者破解打开字符串以查看其支持数组.

上一篇:PHP密码强度检查


下一篇:Codeforces 631C