Kotlin随播对象中的内存泄漏?

时间:2018-08-31 13:41:43

标签: memory-leaks kotlin kotlin-companion

我正在使用Kotlin进行Android开发。有趣的问题。在Java中,在静态字段中保存上下文是内存泄漏。但是,如果我将上下文存储在Kotlin随播对象中,则Android Studio不会说这是内存泄漏。这意味着在Java字节码中,同伴对象不是静态代码吗? 例如:

library(stringr)
df$Total=rowSums(df[,names(df)[str_detect(names(df),'times')]])
df
  id amount zipcode cat1 cat1_times cat2 cat2_times Total
1  1   1000    1001    0          0    1          7     7
2  2   2000    1001    0          0    1          7     7
3  3   2300    1002    1          6    1          5    11
4  4   1500    1002    1          6    1          5    11
5  5   2700    1003    1          3    1          5     8
6  6   3400    1003    1          3    1          5     8

这里没有内存泄漏吗?感谢您的回答:)

1 个答案:

答案 0 :(得分:1)

实际上,您的代码确实以静态方式存储Context,只是因为某些原因,皮棉无法捡起并警告您。

但是,在这种特定情况下,您实际上没有造成内存泄漏的风险。您将静态地Application对象本身进行存储,就像静态变量一样,该对象在整个应用程序生命周期中都将保持活动状态。如果这是其他一些寿命较短的Context,则可能会遇到麻烦,但是应用程序Context应该没问题。

有关这样做是否安全的参考: