如何释放内存泄漏保护的非null变量

时间:2018-06-14 09:37:13

标签: kotlin

我不知道如何在Kotlin中释放对象的非null变量。以下代码是TextView列表。它被初始化为非null对象。

class aaa{
    var DenomList: MutableList<TextView> = mutableListOf()
    var DenomPCSList: MutableList<TextView> = mutableListOf()
    var DenomAmountList: MutableList<TextView> = mutableListOf()
    var DenomNotationList: MutableList<TextView> = mutableListOf()
    var DenomAmountNotationList: MutableList<TextView> = mutableListOf().
}

我想在上面的代码中释放垃圾收集的对象,以保护Kotlin中的内存泄漏。请给我一些信息。

2 个答案:

答案 0 :(得分:1)

要使对象符合垃圾回收条件,下面列出的选项很少:

1)删除不再使用的特定元素。 e.g:

list.remove

2)清除列表中的所有元素

list.clear

3)将整个列表指定为null(在更改为null-null类型后,如果适用)

你需要用来制作合适的那个。

答案 1 :(得分:0)

您可以将它们重新分配到其他列表。如果需要尽量减少内存使用,甚至作弊:

// at top-level, outside any class, or in an object
private val NOT_REALLY_MUTABLE: MutableList<Any> = Arrays.asList<Any>()
fun <T> release() = NOT_REALLY_MUTABLE as MutableList<T>

// in aaa
DenomList = release()

这种方式release不会分配任何内容,只是删除对现有列表的引用,并可能允许垃圾收集。

但是做这样的事情以“防止内存泄漏”应该很少是必要的,并且你不应该在代码不复杂的情况下复杂化。