强引用 M m=new M(),M在没有引用指向时被回收,也可通过System.gc()回收。
软引用 SoftReference:SoftReference<byte[]> m=new SoftReference<byte[]>(new byte[1024102410]);在堆内存不够用时被回收,一般用于缓存上面。主要是垃圾回收器来实现。
弱引用 WeakReference:在System.gc();时被回收,防止内存泄漏。
虚引用 PhantomReference:在调用get()时get不到,太虚了,和没有是一样。作用:管理堆外内存,当对象被回收时,通过Queue可以检测到,然后清理堆外内存
补充:
OOM,即OutOfMemory,内存溢出,原因是:分配的太少;用的太多;用完没释放。
内存泄漏:内存用完没有被释放。大量的内存泄漏就会导致OOM,也就是内存溢出。