清空Kotlin中的变量以释放它在内存中的空间?

问题描述 投票:0回答:1

当我开始编写代码时,大多数解释是“当您声明一个变量时,您在内存中为该变量保留了空间”,但是如果该变量是可空的或可选的,则当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的变量

https://deepu.tech/memory-management-in-jvm/

variables kotlin garbage-collection garbage
1个回答
0
投票
对象的变量始终设置为4字节或8字节(取决于VM是32位还是64位),无论其设置为null还是其他值。用于原语的变量占用与为其定义的原语一样多的内容(对于浮点数和整数,为4字节,对于双精度和长整数为8字节,等等。)>

因此,字符串的声明保留4个字节。当变量超出范围时,将回收该内存。如果在函数内部声明,则在函数返回时它将超出范围。如果将其声明为属性,则当垃圾回收器回收它所属的类实例时,它将超出范围。 (请注意,属性可能根本没有后备字段。)如果在object或顶层空间中声明了该属性,则在应用程序运行时它将永远不会超出范围。

不要将变量本身与它可以指向的对象混淆。这些将占用不止4个字节,并且大小当然会有所不同。当它们被实例化并被垃圾回收器回收时,当它们不再在任何地方被引用时,将保留它们的内存(因此,如果将对对象的最后一个引用设置为null,则

does

会导致释放其内存) 。
© www.soinside.com 2019 - 2024. All rights reserved.