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

一站式网页设计服务平台海口网站制作网站

一站式网页设计服务平台,海口网站制作网站,软件项目管理案例分析,一个logo设计要多少钱Java 中都有哪些引用类型#xff1f; 强引用 在 Java 中最常见的就是强引用#xff0c;把一个对象赋给一个引用变量#xff0c;这个引用变量就是一个强引用。当一个对象被强引用变量引用时#xff0c;它处于可达状态#xff0c;它是不可能被垃圾回收机制回收的。因此强引…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 ListObject 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];SoftReferencebyte[] sr new SoftReference(buff);list.add(sr);}System.gc(); //主动通知垃圾回收for(int i0; 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];WeakReferencebyte[] sr new WeakReference(buff);list.add(sr);}System.gc(); //主动通知垃圾回收for(int i0; 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 PhantomReferenceT extends ReferenceT {/*** Returns this reference objects referent. Because the referent of a* phantom reference is always inaccessible, this method always returns* codenull/code.** return codenull/code*/public T get() {return null;}public PhantomReference(T referent, ReferenceQueue? super T q) {super(referent, q);} } 引用队列ReferenceQueue 引用队列ReferenceQueue是Java中用于管理引用对象的队列。当一个对象被垃圾回收器回收时如果该对象有一个与之关联的引用队列那么该引用对象就会被放入该引用队列中。通过引用队列可以确定对象是否被垃圾回收器回收从而进行相关的清理工作。 引用队列通常与弱引用、软引用和虚引用一起使用。当弱引用、软引用或虚引用所引用的对象被垃圾回收器回收时会将该引用对象放入与之关联的引用队列中。通过检查引用队列中的引用对象可以确定对象已经被回收从而进行必要的清理工作。 引用队列的使用非常灵活可以根据不同的需求来选择不同的引用类型和清理工作。例如对于一些需要进行资源释放的对象可以使用虚引用和引用队列来进行资源的清理工作。 骚戴理解注意引用队列并不可以和强引用一起使用与软引用、弱引用不同虚引用必须和引用队列一起使用。
http://www.hkea.cn/news/14270229/

相关文章:

  • 晋源网站建设微信微商城平台
  • 青岛网站建设大全纪检监察网站建设方案
  • 电商网站页面设计网页设计个人简介模板代码
  • 酒店做网站wordpress主题导航菜单
  • 网站后台编辑怎么做wordpress文章自动加载
  • 南昌p2p网站建设公司网站不收录的原因
  • 深圳网站 建设信科网络网站建设(中企动力)
  • 做的比较好看的国内网站网站制作
  • 网站开发如何记账wordpress商业破解
  • 资深的网站推广网站设计合同附件
  • 网站开发简述vps网站无法通过ip访问
  • 空间制作网站vps wordpress域名
  • 做情诗网站梦之翼wordpress主题站
  • wap网站建设案例成都市区必去的景点
  • 四川建设网官网住房和城乡厅seo网站排名厂商定制
  • 做的比较好的返利网站知乎wordpress手机app登陆
  • 该网站正在建设设计师招聘网站
  • 网站开发哪家好温州市建设工程招投标网站
  • 手表网网站深圳宝安区很穷吗
  • 东莞服务好的营销型网站建设wordpress python采集
  • 建设监理工程公司网站seo公司推荐推广平台
  • 如何将网站和域名绑定什么外贸网站开发客户
  • 网站建设和微信小程序公司网站的建设内容怎么写
  • 东莞seo网站优化方式织梦cms可以做外贸网站吗
  • 国外的服务器建设的网站移动app与网站建设的区别
  • 江苏省住房和城乡建设厅假网站安阳网站公司哪家好
  • 刚做的网站关键词就上来了汕头网站制作推荐
  • 淮北矿业集团工程建设公司网站建立大型网站吗
  • html5电影网站建设云建站自动建站系统源码
  • 社交网站建设网wordpress后台403