2025年java引用类型和基础有几种

java引用类型和基础有几种java 中的四种引用 参考 https blog csdn net 14989227 article details 79589342 https blog csdn net u014086926 article details 52106589 https www cnblogs com huajiezh p 5835618 html https blog csdn

大家好,我是讯享网,很高兴认识大家。



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对象的引用包括: 强引用,软引用,弱引用,虚引用

  1. 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/

  2. 什么是强引用?
    是指创建一个对象并把这个对象赋给一个引用变量。
    Object object =new Object();
    强引用有引用变量指向时永远不会被垃圾回收,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。
    怎么理解呢 只要object(或者还有变量) 还指向这个被new出来的对象,这个对象就不会被回收
    怎么断开这个引用,将变量指向null就行了
 
讯享网 
  1. 什么是软引用?(一般不会被回收,除非内存空间不足)
    如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;
    如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。
    在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()); //
    }
  2. 什么是弱引用?(只要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
    }
小讯
上一篇 2025-01-02 09:40
下一篇 2024-12-30 16:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2253.html