1、如何判断一个类是无用的类
同时满足下述三个条件
- 该类所有的实例都已经被回收,也就是Java堆中不存在该类的任何实例。
- 加载该类的 ClassLoader 已经被回收。
- 该类对应的 java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法
2、如何判断一个常量是废弃常量?
假如在常量池中存在字符串"abc",如果当前没有任何String对象引用该字符串常量的话,就说明常量"abc"就是废弃常量,如果这时发生内存回收的话而且有必要的话," abc"就会被系统清理出常量池。
3、强引用、软引用、弱引用、
强引用
Object strongReference = new Object();
软引用(SoftReference)
// 强引用
String strongReference = new String("abc");
// 软引用
String str = new String("abc");
SoftReference<String> softReference = new SoftReference<String>(str);
弱引用(WeakReference)
String str = new String("abc");
WeakReference<String> weakReference = new WeakReference<>(str);
// 弱引用转强引用
String strongReference = weakReference.get();

参考文章