java中的四种引用
参考: https://blog.csdn.net/_/article/details/
https://blog.csdn.net/u0/article/details/
https://www.cnblogs.com/huajiezh/p/5835618.html
https://blog.csdn.net/_/article/details/
java对象的引用包括: 强引用,软引用,弱引用,虚引用

- java引用类型和基础有几种
什么是引用?
java中的数据类型分为,基本数据类型和引用数据类型
①基本数据类型(8种): byte、short、int、long、float、double,char,boolean
基本数据类型默认值,即位数 https://blog.csdn.net/_/article/details/
不过基本数据类型在作为属性的时候才有用,作为局部变量时,必须初始化才能用
②引用数据类型: 类、接口类型、数组类型、枚举类型、注解类型,字符串型
社么叫引用变量?
例如: A a =new A(); a是A对象 a中存放的是A对象的地址(即引用,不是对象,对象放在堆里(通常情况下))
关于值传递和引用传递参考: https://blog.csdn.net/xiaojinlai123/article/details/ - 什么是强引用?
是指创建一个对象并把这个对象赋给一个引用变量。
Object object =new Object();
强引用有引用变量指向时永远不会被垃圾回收,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。
怎么理解呢 只要object(或者还有变量) 还指向这个被new出来的对象,这个对象就不会被回收
怎么断开这个引用,将变量指向null就行了
- 什么是软引用?(一般不会被回收,除非内存空间不足)
如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;
如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。
在Java中用java.lang.ref.SoftReference类来表示
一个软引用的例子
public static void main(String[] args) {
String str = “”;
SoftReference sr = new SoftReference(str);
System.out.println(sr.get()); //
str = null;
System.out.println(str); //null
System.out.println(sr.get()); //
String s = sr.get();
s = null;
System.out.println(sr.get()); //
} - 什么是弱引用?(只要gc就会被回收)
弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,
都会回收被弱引用关联的对象。在java中,用java.lang.ref.WeakReference类来表示。
弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。
在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,
不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,
因此不一定会很快发现那些只具有弱引用的对象。所以被软引用关联的对象只有在内存不足时才会被回收,
而被弱引用关联的对象在JVM进行垃圾回收时总会被回收。
一个弱引用的例子
public static void main(String[] args) {
WeakReference sr = new WeakReference(new String(“hello”));
System.out.println(sr.get());
System.gc(); //通知JVM的gc进行垃圾回收
System.out.println(sr.get()); //null
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2253.html