2016 - 2024

感恩一路有你

java web Java真的有引用传递吗?

浏览量:2853 时间:2021-04-05 03:21:51 作者:admin

Java真的有引用传递吗?

Java只传递值,不传递引用。普通数据类型直接传递值,而对于引用类型,传递值是堆中被引用对象的内存地址。

java如何判断对象是否还“存活”?

1. 引用计数算法

向对象添加引用计数器。每当有地方引用对象时,计数器将为+1;当引用失败时,计数器将为-1;当计数器为0时,对象将不可能再被引用。

优点:参考计数算法易于实现,效率高。注:Java虚拟机中没有引用计数算法来管理内存,主要是因为它不能解决对象之间的相互循环引用问题。

例如:object obj=null;

public void t(){

test T1=new test();

test T2=new test();

T1。目标=T2

T2。目标=T1

}

2。可达性分析算法

基本思想是从这些起点向下搜索被称为“GC根”的对象,并搜索对象通过的路径(引用链)。如果根没有被任何引用链连接,则对象不可用。如图所示:

在Java中,可以用作GC根的对象包括:

①虚拟机堆栈中的引用对象。

②方法区域中静态属性引用的对象

方法区域中常量引用的对象

本地方法堆栈中JNI引用的对象。

3. 强引用:例如:object obj=new object(),只要强引用还在,垃圾收集器就永远不会回收被引用的对象。

②软引用:用于描述一些有用但不必要的对象。与软引用关联的对象将列在回收范围中,以便在系统即将耗尽内存之前进行二次回收。如果回收后内存不足,将引发内存溢出异常。

③弱引用:用于描述不必要的对象。它的强度比软引用弱。与弱引用关联的对象只能生存到下一次垃圾回收。

④虚拟参考:也称为幻影参考或幻影参考,它是最弱的参考关系。对象是否有虚引用,根本不影响其生成时间,不可能通过虚引用获得对象实例。

java web java 值传递 引用传递 java是什么

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。