Java基础 之 垃圾回收

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34083066/article/details/86648745

        之前我们了解过,当程序初始化一个类或者创建一个类的实例时,会在堆内存中为其分配一块内存。并且在栈内存中创建了一个变量指向了该实例的堆内存地址。但是当我们的变量不在指向该实例时,并且该实例不被任何变量引用时,那么他就会触发垃圾回收机制。

实例在内存中的状态

  可达状态

        当实例被创建时,有一个及以上的变量引用它,则这个对象处于可达状态。

  可恢复状态

        当实例不再拥有变量引用时,实例进入可恢复状态。垃圾回收器准备回收该实例。

  不可达状态

        当实例在不可达状态时被垃圾回收器调用finalize方法,仍不能获得变量引用。实例变成不可达状态。

 

垃圾回收特点

1,垃圾回收只回收堆内存中的实例。

2,程序中即使显式命令其进行垃圾回收,也无法精准控制垃圾回收器进行回收。他会有自己的一套运行机制。

3,创建了一个实例(可达状态)应用后,当实例不再被任何变量引用(可恢复状态),垃圾回收器会对该对象代用finalize方法,使对象重新获得变量引用(可达状态),但如果还是无法获得引用(不可达状态),那么垃圾回收器才会将其回收,否则不回收该实例。

图示:

猜你喜欢

转载自blog.csdn.net/qq_34083066/article/details/86648745
今日推荐