我们知道,对于对象,它通过引用计数和其他算法来工作。
但是对于基本数据类型,我们无法使其成为 NULL
,例如:
int a = NULL;
Java中原始数据类型的垃圾回收器是如何工作的?
我们知道,对于对象,它通过引用计数和其他算法来工作。
但是对于基本数据类型,我们无法使其成为 NULL
,例如:
int a = NULL;
原始数据类型可以是对象中的字段,也可以用于数组,而这些数组本身也是对象。对于垃圾收集器来说,这些字段并不重要,因为它们不包含指针。因此,它们可以被完全忽略,并且一旦对象/数组被垃圾回收,它们也会随之自动释放。
原始数据类型被放置在 stack
中,当它们超出作用域时会立即释放,因此没有垃圾回收。与之相反的是,对象被放置在 heap
中并存储在更长期的内存中。
String someString;
时,someString
本身永远不会被单独收集 - 它本质上就像int
或double
一样是一个“原始类型”。相反,someString
指向的对象最终会被收集。 - Hot Licks