云栖问答

找不到答案?去提问题

java Image DB 2018-10-31 18:44:12

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

image

  1. 这些类要这么体现出效果
  2. 强引用 弱引用 等等 的区别
  3. 这些类能做些什么(实现那些功能)

3个回答

1

饭娱咖啡 已采纳

你想了解的这些知识,很难用简短的回答可以说清楚的,更多的希望你能多看看书或者其他人的博客文章进行加深理解。
这些引用主要是跟 GC 有关,你可以去看看了解 GC 和 JVM 的相关知识,这里我简单的说一下。

Strong Reference(强引用):不会被垃圾回收器回收。
Soft Reference(软引用):内存空间不足时,就会被垃圾回收器回收。
Weak Reference(弱引用):一旦被置为null,就可以被垃圾回收器回收。
Phantom Reference(虚引用):随时可以被垃圾回收器回收。

下图描述了各个引用之间的关系:
Weak_Strong_Soft_and_Phantom_Reference_in_Java

1

青楼艾小生

了解引用的区别首先要明白GC的机制
虽然Java程序员不需要关注内存,但是运行在手机上的内存远远不能和PC比
new出一个对象,则在栈区得到了一份引用,如果没有指向任何一个对象,则GC机制会将之放入待回收区等待回收(不可达算法)

普通的声明对象方法都属于强引用,如果没有释放系统会一直保存,当达到系统分配给apk的内存阈值后则产生oom异常
如果想系统强制回收一部分内存则引出了弱引用,常见的使用场景有图片浏览,使用WeakReference来引用,则会在内存吃紧的时候强制回收

深入了解的话需要看看JVM相关的书籍,对于Android程序员来说不必太深入,平时积累好良好的编码习惯,多多练习

0

1643626228846140

你想了解的这些知识,很难用简短的回答可以说清楚的,更多的希望你能多看看书或者其他人的博客文章进行加深理解。这些引用主要是跟 GC 有关,你可以去看看了解 GC 。

1
GO
7204
浏览
1
收藏
邀请他人回答
高速通道(ExpressConnect)是一款便捷高效的网络服务,用于在云上的不同网络环境间实现高速、稳定、安全...

阿里云针对移动应用推出的无线加速产品,旨在依托阿里云遍布全网的加速节点,海量带宽网络等优越的基础设施,为开发者提...

兼容Jenkins标准,可提供快速可靠的持续集成与持续交付服务。基于容器技术和阿里云基础服务架构,提供稳定和安全...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...