当前位置: 首页 > news >正文

如何用php做网站管理系统东莞网站优化公司

如何用php做网站管理系统,东莞网站优化公司,威海相亲网站,如何自己做网站赚钱Java 中都有哪些引用类型? 强引用 在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的。因此强引…

Java 中都有哪些引用类型?

强引用

在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的。因此强引用是造成 Java 内存泄漏的主要原因之一。

Object obj = new Object(); //只要obj还指向Object对象,Object对象就不会被回收
obj = null;  //手动置null

只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null,这样一来,JVM就可以适时的回收对象了

软引用

软引用是用来描述一些非必需但仍有用的对象。在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。这种特性常常被用来实现缓存技术,比如网页缓存,图片缓存等。
在 JDK1.2 之后,用java.lang.ref.SoftReference类来表示软引用。

在运行下面的Java代码之前,需要先配置参数 -Xms2M -Xmx3M,将 JVM 的初始内存设为2M,最大可用内存为 3M。

public class TestOOM {private static List<Object> list = new ArrayList<>();public static void main(String[] args) {testSoftReference();}private static void testSoftReference() {for (int i = 0; i < 10; i++) {byte[] buff = new byte[1024 * 1024];SoftReference<byte[]> sr = new SoftReference<>(buff);list.add(sr);}System.gc(); //主动通知垃圾回收for(int i=0; i < list.size(); i++){Object obj = ((SoftReference) list.get(i)).get();System.out.println(obj);}}}

打印结果

我们发现无论循环创建多少个软引用对象,打印结果总是只有最后一个对象被保留,其他的obj全都被置空回收了。
这里就说明了在内存不足的情况下,软引用将会被自动回收。

弱引用

弱引用需要用 WeakReference 类来实现,它比软引用的生存期更短,对于只有弱引用的对象来说,只要垃圾回收机制一运行,不管 JVM 的内存空间是否足够,总会回收该对象占用的内存。

private static void testWeakReference() {for (int i = 0; i < 10; i++) {byte[] buff = new byte[1024 * 1024];WeakReference<byte[]> sr = new WeakReference<>(buff);list.add(sr);}System.gc(); //主动通知垃圾回收for(int i=0; i < list.size(); i++){Object obj = ((WeakReference) list.get(i)).get();System.out.println(obj);}}

虚引用

虚引用(Phantom Reference)是Java中四种引用类型之一,也是最弱的一种引用类型。虚引用的作用是帮助对象在被垃圾回收器回收时,可以在回收之前进行必要的清理工作。虚引用并不能通过它访问对象本身,也不能通过它访问对象的任何属性或方法,因为它的get()方法总是返回null。虚引用主要用于管理堆外内存,例如NIO Direct Memory中的内存。当虚引用所引用的对象被垃圾回收器回收时,虚引用会被放入一个ReferenceQueue中,以便在必要时进行清理工作。虚引用一般与ReferenceQueue一起使用,通过检查ReferenceQueue中的引用对象,可以确定对象已经被回收,从而进行相关的清理工作。虚引用通常由java.lang.ref.PhantomReference类来实现。

public class PhantomReference<T> extends Reference<T> {/*** Returns this reference object's referent.  Because the referent of a* phantom reference is always inaccessible, this method always returns* <code>null</code>.** @return  <code>null</code>*/public T get() {return null;}public PhantomReference(T referent, ReferenceQueue<? super T> q) {super(referent, q);}
}

引用队列(ReferenceQueue)

引用队列(ReferenceQueue)是Java中用于管理引用对象的队列。当一个对象被垃圾回收器回收时,如果该对象有一个与之关联的引用队列,那么该引用对象就会被放入该引用队列中。通过引用队列,可以确定对象是否被垃圾回收器回收,从而进行相关的清理工作。

引用队列通常与弱引用、软引用和虚引用一起使用。当弱引用、软引用或虚引用所引用的对象被垃圾回收器回收时,会将该引用对象放入与之关联的引用队列中。通过检查引用队列中的引用对象,可以确定对象已经被回收,从而进行必要的清理工作。

引用队列的使用非常灵活,可以根据不同的需求来选择不同的引用类型和清理工作。例如,对于一些需要进行资源释放的对象,可以使用虚引用和引用队列来进行资源的清理工作。

骚戴理解:注意引用队列并不可以和强引用一起使用,与软引用、弱引用不同,虚引用必须和引用队列一起使用。

http://www.mmbaike.com/news/90091.html

相关文章:

  • 成都手机网站建设查看百度关键词价格
  • 个人网站需要什么内容百度收录情况查询
  • 建设部网站查询关键词优化哪家好
  • 直接做的黄页视频网站谷歌google下载安卓版 app
  • 湖南做网站哪家好2024年4月新冠疫情结束了吗
  • 电商网站开发教材竞价托管的注意事项
  • 网站开发进度把握可口可乐网络营销策划方案
  • 购物网站风格百度推广代理加盟
  • 做网站 赚钱吗怎么做公众号
  • 网站开发背景怎么建网站免费的
  • 鞍山做网站公司专业做网站公司
  • b2c网站的销售设计流程在线域名查询网站
  • 专业网站建设报价义乌百度广告公司
  • 重庆做网站哪家好友情链接网站
  • 企业网站建设合同松原新闻头条
  • 政府门户网站建设管理情况汇报营销软文200字
  • 百度推广要企业自己做网站吗91
  • 用dw做的网站百度关键词优化平台
  • 有哪些程序做的网站推广app赚钱项目
  • 手机版在线公章制作生成成都seo正规优化
  • 软件公司市值排名搜索引擎优化包括哪些方面
  • 免费个人网站建站申请一下海外推广运营
  • wordpress 自定义页面插件seo攻略
  • dedecms 如何关闭网站济南做seo外包
  • vr网站开发技术北京seo顾问服务公司
  • 厦门公司做网站陕西整站关键词自然排名优化
  • 中核待遇那么好为什么去的人少学seo哪个培训好
  • 做网站可以用别人的身份证吗网络营销分类
  • wordpress模板h+谷歌seo顾问
  • 域名注册备案哈尔滨推广优化公司