5.1.3 对象 引用和指针
对象的存储
类是一种引用数据类型
,因此程序中定义的Person
类型的变量实际上是一个引用,引用被存放在栈内存
里,指向实际的Person
对象;而真正的Person
对象则存放在堆内存
中。
对象的成员变量数据存放在堆内存
栈内存里的引用变量并未真正存储对象的成员变量,对象的成员变量数据实际存放在堆内存里;而引用变量
只是指向该堆内存里的对象。从这个角度来看,引用变量
与C语言里的指针
很像,它们都是用于存储一个地址值,通过这个地址来引用到实际对象。
当一个对象被创建成功以后,这个对象将保存在堆内存
中,Java
程序不允许直接访问堆内存中的对象,只能通过该对象的引用操作该对象。也就是说,不管是数组还是对象,都只能通过引用来访问它们。
一个对象多个引用
堆内存里的一个对象可以有多个引用,即多个引用变量指向同一个对象
垃圾
如果没有任何引用变量指向堆内存里的对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,Java
的垃圾回收机制将回收该对象,释放该对象所占的内存区。
如何让垃圾回收器回收一个对象
如果希望通知垃圾回收机制回收某个对象,只需切断所有引用变量和该对象的关系即可,也就是把该对象的所有引用变量赋值为null
,。
原文链接: 5.1.3 对象 引用和指针