当我开始编写代码时,大多数解释是“当您声明一个变量时,您在内存中为该变量保留了空间”,但是如果该变量是可空的或可选的,则当te变量转换为null时,它会释放空间吗?
示例
我有一个字符串变量
var x: String? = "Some text"
当我将x设置为null时,将释放内存中的空间?
x = null
我在Kotlin的页面上了解了变量,但对此一无所知。
https://kotlinlang.org/docs/tutorials/kotlin-for-py/declaring-variables.htmlhttps://kotlinlang.org/docs/tutorials/kotlin-for-py/null-safety.html
我知道如果我没有对该变量的任何引用,GB就会释放内存,但是我有一个当前值为null的变量
因此,字符串的声明保留4个字节。当变量超出范围时,将回收该内存。如果在函数内部声明,则在函数返回时它将超出范围。如果将其声明为属性,则当垃圾回收器回收它所属的类实例时,它将超出范围。 (请注意,属性可能根本没有后备字段。)如果在object
或顶层空间中声明了该属性,则在应用程序运行时它将永远不会超出范围。
不要将变量本身与它可以指向的对象混淆。这些将占用不止4个字节,并且大小当然会有所不同。当它们被实例化并被垃圾回收器回收时,当它们不再在任何地方被引用时,将保留它们的内存(因此,如果将对对象的最后一个引用设置为null
,则
does
会导致释放其内存) 。