Jvm面试总结

147 阅读1分钟

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();

参考文章