【发布时间】:2019-05-22 07:35:17
【问题描述】:
使用Arrays.fill(password, 0) 而不是使用password = null 将char 数组“清零”以使其不会留在内存中是否有不同的好处?我不是在问为什么使用 char 数组而不是 String。我在问为什么将值设置为 0 而不是将数组设置为 null。是不是因为将值设置为 0 会立即更改内存中的值,而 null 不会立即将内存中的值更改为 null,而只是等待它被垃圾回收?将值设置为 0 然后立即将其设置为 null 以便垃圾收集,而不是作为 0 的数组闲置,是否有意义?
【问题讨论】:
-
在 GC 启动之前,将变量设置为 null 不会从内存中擦除对象。
-
我本可以发誓之前有人问过这个问题,但我认为将数组清零比重新引用对象要好,因为您可以确定内存已更改并且不必等到垃圾收集完毕。
-
@shmosel 这就是我所指的问题,谢谢!
-
我不是在问为什么要使用 char 数组而不是字符串。我在问为什么将值设置为 0 而不是将数组设置为 null。这些答案都没有阐明这种差异。
-
你看到我的回答了吗?