【问题标题】:Java: Setting Array to null to free memoryJava:将 Array 设置为 null 以释放内存
【发布时间】:2016-10-08 21:52:45
【问题描述】:

我有一个 Android 应用程序,我在其中分配大型数组,将它们填满,然后将它们放入缓冲区中。这样做之后,阵列就躺在周围,什么都不做。理论上将它们设置为 null 会提高我的应用程序的性能,还是效果可以忽略/不存在?

【问题讨论】:

  • 最好让数组变量尽可能局部化,这样当声明它们的方法结束时,数组就会超出范围,不再存在。

标签: java android arrays memory-management jvm


【解决方案1】:

通常不会,将数组设置为 null 不会以任何方式提高性能或内存使用率。

当垃圾收集器确定对象不再可访问时,它会释放内存。显式设置对 null 的引用是向垃圾收集器发出的一个很好的信号,表明该对象是可释放的,但如果这些数组已经不再被引用(例如,它们的包含对象不再被引用),那么显式设置它为 null 不会使垃圾回收更快。

【讨论】:

  • 只是添加到这个已经很好的答案;仅仅因为您将数组本身设置为 null 并不意味着数组的内容就会消失。它们仍在内存中,并且仍然必须像它们是数组的一部分一样进行 GC。它们只是不再被数组引用,但由于数组被更长的引用,所以它是多余的。
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
  • 2016-03-01
  • 1970-01-01
  • 2016-05-20
  • 2013-07-30
  • 2014-02-22
相关资源
最近更新 更多