将null分配给字符串var以删除敏感数据

Dav*_*e C 1 java fortify

在这里查看一些Fortify的发现,它告诉我不要对敏感数据使用字符串数据类型,因为它们可能会在内存中停留太长时间.如果存在无关的内存攻击,例如Heartbleed,则会暴露用户的数据.

如果我在使用后将字符串var设置为null,那么该内存位置是否实际被清除,或者是为存储null而创建的var的副本?

谢谢

Kev*_*man 8

我想你问的是错误的问题.

如果将变量设置为null,则确定该引用指向null.原始值可以是垃圾回收.

问题是字符串比这复杂一点.你应该问的问题是为什么其他字符串可以留在记忆中?

答案就是String文字池.谷歌是你的朋友,但这是一个不错的开始:

什么是Java字符串池以及"s"与新String("s")有何不同?

什么时候字符串在java中被垃圾收集

字符串文字的垃圾收集