嘉兴网站seo外包,广告图片网站源码,织梦如何做中英文网站,中国空间站实时位置目录
引用计数法和可达性分析法
引用计数法#xff1a;
可达性分析算法#xff1a;
五种对象引用
软引用#xff1a;
弱引用#xff1a; 引用计数法和可达性分析法
引用计数法#xff1a; 引用计数法会为每个对象维护一个引用计数器#xff0c;当对象被引用时加1
可达性分析算法
五种对象引用
软引用
弱引用 引用计数法和可达性分析法
引用计数法
引用计数法会为每个对象维护一个引用计数器当对象被引用时加1取消引用时减1。 每次引用和取消引用都需要维护计数器对系统性能会有一定的影响存在循环引用问题当A引用BB同时引用A时会出现对象无法回收的问题。会产生内存的泄露。 idea中配置虚拟机参数来查看-verbose:gc 可达性分析算法
java使用的是可达性分析算法来判断对象是否可以被回收。可达性分析将对象分为两类 垃圾回收的根对象和 普通对象对象与对象之间存在引用关系。 可达性分析算法指的是如果从某个到 GC Root对象是可达的对象就不可被回收。 哪些对象被称为GC Root对象 线程Thread对象引用线程栈帧中的方法参数局部变量等。系统类加载器加载的java.lang.Class对象监视器对象用来保存同步锁synchronized关键字持有的对象本地方法调用时使用的全局对象。 第一类本身占内存就是线程中的所以堆中的线程对象就指向栈内存。 第二类GC对象为下图所示还有其他等等 第三类监视器对象 第四类程序员不需要太关注。 五种对象引用
可达性算法中描述的对象引用一般指的是强引用即是 GCRoot对象对普通对象有引用关系只要这层关系存在普通对象就不会被回收除了强引用外java中还设计了几种其他引用方式。 强引用软引用弱引用虚引用终结器引用 软引用
软引用相对强引用是一种比较软弱的引用关系 如果一个对象只有软引用关联到它当程序内存不足时就会将软引用中的数据进行回收。 在JDK1.2版之后提供了 SoftReference类来实现软引用 软引用常用于缓存中。 软引用中的对象如果在内存不足时回收SoftReference对象本身也需要被回收。如何知道哪些SoftReference对象需要回收呢 SoftReferencr提供个一套队列机制 软引用创建时通过构造器传入引用队列在软引用中包含的对象被回收时改以你用对象会被放入引用队列通过代码遍历引用队列将SoftReference强引用删除。 弱引用
弱引用的整体机制和软引用基本一致区别在于 弱引用包含的对象在垃圾回收时不管内存够不够都会直接被回收。 在JDK1.2版之后提供了WeakReference类来实现弱引用弱引用主要在ThreadLocal中使用。 弱引用对象本身也可以使用引用对列进行回收。