0
点赞
收藏
分享

微信扫一扫

Java基础-对象的引用类型

上一篇 <<<JVM中对象如何完成空间分配和初始化工作
下一篇 >>>JVM元空间(方法区)和栈内存溢出原因及解决方案


强引用

QuoteEntity user1 = new QuoteEntity("jarye");
QuoteEntity user2 = user1;
user1 = null;
System.out.println(user2);
System.gc();
System.out.println(user2);
---------------------------------------------------------------
打印结果:
com.jarye.quote.entity.QuoteEntity@2f410acf
com.jarye.quote.entity.QuoteEntity@2f410acf

软引用

ArrayList<SoftReference<byte[]>> objects = new ArrayList<>();
for (int i = 0; i < 10; i++) {
SoftReference<byte[]> softReference = new SoftReference<>(new byte[4 * 1024 * 1024]);
System.out.println("======="+softReference.get());
objects.add(softReference);
}
System.out.println("打印结果:");
objects.forEach((t) -> {
System.out.println("-------------"+t.get());
});

弱引用

QuoteEntity user1 = new QuoteEntity("jarye");
WeakReference<QuoteEntity> weakReference = new WeakReference<QuoteEntity>(user1);
user1 = null;
System.out.println(weakReference.get());
System.gc();
System.out.println(weakReference.get());
---------------------------------------------------------------
打印结果:
com.jarye.quote.entity.QuoteEntity@2f410acf
null

虚引用

QuoteEntity user1 = new QuoteEntity("jarye");
ReferenceQueue<Object> referenceQueue = new ReferenceQueue<Object>();
PhantomReference<QuoteEntity> phantomReference = new PhantomReference<QuoteEntity>(user1, referenceQueue);
System.out.println(phantomReference.get());
---------------------------------------------------------------
null

tips:软弱虚对应引用的指针放入到引用队列中,实现清理。


相关文章链接:
<<<Java基础-反射机制
<<<Java基础-字节码技术
<<<Java基础-创建对象的方式汇总
<<<Java基础-对象布局
<<<Class文件分析一个类为啥最多支持65535个接口
<<<为什么重写equals还要重写hashcode方法
<<<如何自定义注解
<<<十大经典排序算法汇总-动画演示
<<<JDK8十大新特性

举报

相关推荐

0 条评论