这是一个有关内存数据安全的问题。
Java垃圾回收是否可以安全清除垃圾数据?
显然,在一段数据被垃圾回收后,我就不能再检索它了,但黑客是否仍然可以进行内存转储以检索数据?
这是一个有关内存数据安全的问题。
Java垃圾回收是否可以安全清除垃圾数据?
显然,在一段数据被垃圾回收后,我就不能再检索它了,但黑客是否仍然可以进行内存转储以检索数据?
这取决于JVM的实现以及其中可能存在的选项,但我认为它不会清除数据。垃圾回收只需要跟踪哪些区域可用。将所有数据设置为0或其他值是很多不必要的写操作。因此,您经常会看到API使用字符数组来存储密码,而不是字符串。
具体而言,Oracle JVM 不会清理空间,它只会在 Eden 和 Survivor 空间之间复制数据,不再使用的对象仍然留在那里成为垃圾,最终将被覆盖。类似的事情也会发生在 OldGen 中,一些地方被标记为已使用,当对象符合垃圾收集条件时,它所占用的位置将被标记为未使用。随着足够的应用程序时间,它也将最终被覆盖。