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

可以做代发货源的网站电商平台怎么搭建

可以做代发货源的网站,电商平台怎么搭建,wordpress架设,公司网站建设行业怎么样如何判断堆上的对象没有被引用? 常见的有两种判断方法:引用计数法和可达性分析法。 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减1。 引用计数法的优点是实现简单,缺点有两点&#xff1…

如何判断堆上的对象没有被引用?
常见的有两种判断方法:引用计数法和可达性分析法。
引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减1。
在这里插入图片描述
引用计数法的优点是实现简单,缺点有两点:
1.每次引用和取消引用都需要维护计数器,对系统性能会有一定的影响
2.存在循环引用问题,所谓循环引用就是当A引用B,B同时引用A时会出现对象无法回收的问题。
在这里插入图片描述
可达性分析算法
Java使用的是可达性分析算法来判断对象是否可以被回收。可达性分析将对象分为两类:垃圾回收的根对象(GC
Root)和普通对象,对象与对象之间存在引用关系。
下图中A到B再到C和D,形成了一个引用链,可达性分析算法指的是如果从某个到GC Root对象是可达的,对象就
不可被回收。
在这里插入图片描述
可达性分析算法
哪些对象被称之为GC Root对象呢?
⚫ 线程Thread对象,引用线程栈帧中的方法参数、局部变量等。
⚫ 系统类加载器加载的java.lang.Class对象,引用类中的静态变量。
⚫ 监视器对象,用来保存同步锁synchronized关键字持有的对象。
⚫ 本地方法调用时使用的全局对象。

如何判断堆上的对象有没有被引用?

引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减
1,存在循环引用问题所以Java没有使用这种方法。
Java使用的是可达性分析算法来判断对象是否可以被回收。可达性分析将对象分为两
类:垃圾回收的根对象(GC Root)和普通对象。
可达性分析算法指的是如果从某个到GC Root对象是可达的,对象就不可被回收。最
常见的是GC Root对象会引用栈上的局部变量和静态变量导致对象不可回收

JVM 中都有哪些引用类型

⚫ 强引用,JVM中默认引用关系就是强引用,即是对象被局部变量、静态变量等GC Root关联的对象引用,只要
这层关系存在,普通对象就不会被回收。
⚫ 软引用,软引用相对于强引用是一种比较弱的引用关系,如果一个对象只有软引用关联到它,当程序内存不足
时,就会将软引用中的数据进行回收。软引用主要在缓存框架中使用。
⚫ 弱引用,弱引用的整体机制和软引用基本一致,区别在于弱引用包含的对象在垃圾回收时,不管内存够不够都
会直接被回收,弱引用主要在ThreadLocal中使用。
⚫ 虚引用(幽灵引用/幻影引用),不能通过虚引用对象获取到包含的对象。虚引用唯一的用途是当对象被垃圾回
收器回收时可以接收到对应的通知。直接内存中为了及时知道直接内存对象不再使用,从而回收内存,使用了
虚引用来实现。
⚫ 终结器引用,终结器引用指的是在对象需要被回收时,终结器引用会关联对象并放置在Finalizer类中的引用队
列中,在稍后由一条由FinalizerThread线程从队列中获取对象,然后执行对象的finalize方法,在对象第二次
被回收时,该对象才真正的被回收

ThreadLocal中为什么要使用弱引用?

ThreadLocal可以在线程中存放线程的本地变量,保证数据的线程安全。
在这里插入图片描述
ThreadLocal中是这样去保存对象的:
1、在每个线程中,存放了一个ThreadLocalMap对象,本质上就是一个数组实现的哈希表,里边存放多个Entry对象。
2、每个Entry对象继承自弱引用,内部存放ThreadLocal对象。同时用强引用,引用保存的ThreadLocal对应的value值。
在这里插入图片描述
以代码为例:
threadLocal.set(new User(1,“main线程对象”));
在这里插入图片描述
User user = threadLocal.get();
在这里插入图片描述
不再使用Threadlocal对象时, threadlocal = null;由于是弱引用,那么在垃圾回收之后,ThreadLocal对象就可以被
回收。
在这里插入图片描述
此时还有Entry对象和value对象没有能被回收,所以在ThreadLocal类的set、get、remove方法中,在某些特定条件满
足的情况下,会主动删除这两个对象。
在这里插入图片描述
如果一直不调用set、get、remove方法或者调用了没有满足条件,这部分对象就会出现内存泄漏。强烈建议在
ThreadLocal不再使用时,调用remove方法回收将Entry对象的引用关系去掉,这样就可以回收这两个对象了
在这里插入图片描述

ThreadLocal中为什么要使用弱引用?

当threadlocal对象不再使用时,使用弱引用可以让对象被回收;因为仅有弱引用没
有强引用的情况下,对象是可以被回收的。
弱引用并没有完全解决掉对象回收的问题,Entry对象和value值无法被回收,所以合
理的做法是手动调用remove方法进行回收,然后再将threadlocal对象的强引用解除

http://www.ds6.com.cn/news/17309.html

相关文章:

  • 河南省教育厅官方网站师德建设网页搜索排名提升
  • 莱阳网站制作百度识图扫一扫入口
  • 浙江网站建设费用嵌入式培训
  • 吉林省建设监理协会网站免费seo网站优化工具
  • 调用wordpress数据电商关键词seo排名
  • wordpress建立仿站关键词优化策略有哪些
  • 南昌网站开发机构网络推广项目代理
  • 中国住房和建设委员会网站全网引擎搜索
  • 打电话叫人做网站福建企业seo推广
  • 定制程序网站网页是怎么制作的
  • 阿里云服务器做美女网站谷歌seo工具
  • 个人网站可以做经营性的吗seo和sem的区别是什么?
  • 中山做百度网站的公司吗如何提高自己在百度的排名
  • 免费拓客软件排行榜无锡网站seo顾问
  • 宝安附近做网站公司淘宝友情链接怎么设置
  • 手机网站快速建设千峰培训可靠吗?
  • 大连坐网站一个公司可以做几个百度推广
  • 外贸网站模板网站关键词优化软件
  • 网站的建立步骤营销渠道方案
  • 国外设计网址成都比较靠谱的seo
  • 淘宝网站首页是用什么软件做的如何宣传自己的网站
  • 网站建设有哪些软件seo优化标题 关键词
  • 网站建设包括备案吗苏州关键词优化排名推广
  • 咨询在线客服seo引擎搜索
  • 做面包的网站网站推广系统
  • 承德公司网站建设新闻博客软文自助推广
  • 临沂企业网站建设域名是什么 有什么用
  • 门户网站设计欣赏企业站seo外包
  • 专业集团门户网站建设企业怎么找一手app推广代理
  • 怎样做外国石雕产品网站网络推广运营外包公司