Runtime.getRuntime().gc()
在 Java 中,有以下几种对象可以作为 GC Root:undefined Java 虚拟机栈(局部变量表)中的引用的对象。undefined 方法区中静态引用指向的对象。undefined 仍处于存活状态中的线程对象。undefined Native 方法中 JNI 引用的对象。
java四种引用
https://www.cnblogs.com/pascall/p/10281775.html
强引用 它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误
String str = "hello"; // 强引用
str = null; // 取消强引用
软引用 在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收;只有在内存空间不足时,软引用才会被垃圾回收器回收。
SoftReference<String> softName = new SoftReference<>("haha");
弱引用 具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象。
WeakReference<String> weakName = new WeakReference<String>("hello");
WeakReference(T referent, ReferenceQueue<? super T> q)
4.虚引用 如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。它的作用在于判断一个对象是否被正确的垃圾回收了。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。
ReferenceQueue<String> queue = new ReferenceQueue<String>();
PhantomReference<String> pr = new PhantomReference<String>(new String("hello"), queue);
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。