java强援用和弱援用有甚么不同
Java的援用分为四种:强援用(Strong Reference)、软援用(Soft Reference)、弱援用(Weak Reference)和虚援用(Phantom Reference)。其中,强援用和弱援用的不同以下:
生命周期:强援用可以禁止被援用对象被垃圾回收,只有当强援用被置为null时,才会被垃圾回收。而弱援用不会禁止被援用对象被垃圾回收,在垃圾回收时,不管弱援用是否是被置为null,都会被回收。
内存管理:强援用需要手动释放内存,而弱援用会自动释放内存。当一个对象只被弱援用援用时,即便堆内存不足,垃圾回收器也会回收该对象的内存,从而避免了内存泄漏的问题。
使用处景:强援用适用于需要确保对象一直存在的情况,如单例模式中的对象。而弱援用适用于缓存、缓存清除、对象池等场景,可以在内存不足时自动释放缓存对象,从而保证系统的稳定性。
总结来讲,强援用会一直持有对象,直到被手动置为null,而弱援用不会禁止对象被垃圾回收器回收,适用于对内存敏感的场景。
TOP