JAVA基础(三)
一、java的四种引用
1.强引用
- 在内存不足的情况下(oom)也不会被回收。
- String str= new String(123)。
2. 软引用
- 在内存不足的情况下(OOM)会被回收。
- SoftReference<String > reference=new SoftReference<String>(new String("234"))。
- 场景:创建缓存的时候,创建的对象放进缓存中。
3.弱引用
- JVM垃圾回收器发现了他,就会将他回收。
- WeakReference<String> wrf = new WeakReference<String>(str)。
- 可用场景: Java源码中的java.util.WeakHashMap 中的key 就是使用弱引用,我的理解就是,一旦我不需要某个引用,JVM会自动帮我处理它,这样我就不需要做其它操作。
4.虚引用
- 虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入ReferenceQueue 中。其它引用是被JVM回收后才被传入ReferenceQueue 中的。由于这个机制,所以虚引用大多被用于引用销毁前的处理工作。还有就是,虚引用创建的时候,必须带有ReferenceQueue
- PhantomReference<String> prf = new PhantomReference<String>(new String("str"), new ReferenceQueue<>());
二、泛型
三、java创建对象的方式
- new
- 反射
- clone
- 反序列化
四、深拷贝与浅拷贝
- 浅拷贝:被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用依然指向原来的对象。
仅仅复制所拷贝的对象,而不复制他所引用的对象。
- 深拷贝:被复制对象的所有变量都含有与原来对象相同的值,而那些引用其他对象的变量将指向被复制过来的新对象
把复制的对象及引用的对象都拷贝过来。

浙公网安备 33010602011771号