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

小网站模板买源码做网站

小网站模板,买源码做网站,制作公司网站步骤,微信商城小程序定制(1)五种引用_强软弱 实线箭头表示强引用,虚心线表示软弱虚终结器引用 在平时我们用的引用,基本都为强引用 ,比如说创建一个对象通过运算符赋值给了一个变量,那么这个变量呢就强引用了刚刚的对象 强引用的…

(1)五种引用_强软弱

实线箭头表示强引用,虚心线表示软弱虚终结器引用 

在平时我们用的引用,基本都为强引用 ,比如说创建一个对象通过=运算符赋值给了一个变量,那么这个变量呢就强引用了刚刚的对象

强引用的特点:通过GC Root的引用链, 能够找到它,他就不会被垃圾回收

C对象   (GC Root)通过引用链可以找到A1对象,那么它不能回收的

B对象   (GC Root)通过引用链可以找到A1对象,那么A1它不能回收的

只有GC Root对它的引用都断开时,它才能被垃圾回收

软 弱引用:只要A2和A3这两个对象没有被直接的强引用所引用,那么当垃圾回收时,都可能被回收掉 

当发生了垃圾回收,回收完发现内存不够,那么他会把软引用所引用的这个A2对象回收掉 

当发生了垃圾回收,不管是不是内存充足,都会把弱引用所引用的A3对象回收掉

 

 软引用可以配合一个引用队列:

当软引用的对象被回收掉之后软引用自身也是一个对象,在创爱时分配了一个引用队列,当它所引用的对象被回收时软引用就会进入这个队列,弱引用也是如此

为什么做这样的一个处理呢?因为软引用或者弱引用也好他们自身也用占用一定的内存,如果想把他们两个占用的内存做进一步的释放需要使用这个引用队列找到他们,然后作进一步的处理

(2)五种引用_虚引用和终结器引用

虚引用和终结器引用必须配合引用队列来使用,也就是说当虚引用创建的时候关联一个引用对列,当终结器引用创建的时候也会关联一个引用对列

当创建ByteBuffer对象时会创建一个名为Cleaner的虚引用对象,ByteBuffer会分配一块直接内存,会把直接内存地址传递给虚引用对象,当ByteBuffer以后没有别强引用后,他自己可以别垃圾回收掉了,但是它分配的那个直接内存并不能被java垃圾回收所管理,所以当ByteBuffer别回收的时候,让虚引用对象进入引用队列

引用队列会有一个referencrHandler的线程去这个队列里找有没有一个新入队的Cleaner,如果有的haul会调用Cleaner中的方法clean(),根据前面记录的直接内存的地址,调用Unsafe的freeMemary()方法释放掉直接内存,这样就会保证直接内存导致的内存泄露

我们知道所有的对象都会继承于Object对象父类,Object里面都会有一个finallize()方法,一个终结方法,当我这个对象重写了终结方法,并没有强引用B对象,那么它可以当成垃圾进行回收,那么这个终结方法在什么时候调用呢?那就是靠的终结器引用达到这个目的,当没有强引用我的这个对象时,对象会由虚拟机帮我们创建它对应的终结器引用,当这个对象A4被垃圾回收时把终结器引用也加入引用队列,再由一个优先级很低的一个线程在某个时机去这个引用队列是不是有终结器引用,有的话会找到我们要作为垃圾回收的这个对象并且调用它的finallize方法,等调用完了,等下一次垃圾回收时就可以回收掉了

finallize工作效率还是很低,第一次回收时不能把它回收掉,需要先把终结器引用入队,那个检查线程优先级很低,可能造成这个对象的finallize方法迟迟不能调用这个对象占用的内存也迟迟不能释放,索引我们不推荐使用finallize去释放资源的一个理由 

(3)软引用_应用

设置堆聂村大小20兆

我们这往List集合里面循环放4个字节的数组,比如说放4byte的图片,由于图片的数量过多,我们用强引用来引用这个图片资源,就会导致下面的内存溢出的错误,这些不重要的资源,能不能在内存紧张时,把它占用的内存释放掉,以后用到这个图片我再读取一下不就行了嘛,就不是使用给这个强引用场景了需要使用弱引用 

我们不使用List直接去引用Byte数组啦,他们之间加了一个SoftRerence软引用对象,软引用对象呢再间接引用Byte数组,

现在List和SoftRerence之间是强引用,SoftRerence和Byte数组是一个软引用了

加上垃圾回收的虚拟机参数:

循环5次并没有发生内存的溢出,但是在最后再一次循环数组发现只有最优一个有数据,前面几个都被回收掉了,只有最后一个保留了下来

在第三次循环时内存已经很紧张了,触发了一次垃圾回收 ,第四次循环,发现还是不够又触发了一次MinarGC回收效率不高又触发了一次Full GC,还是没有回收多少,然后触发了软连接的垃圾回收,一次垃圾回收后如果空间还是不够他就把软连接引用的对象释放掉,这次垃圾回收之后我们发现新生代和老年代都得到巨大回收,代价呢呢吧前四次的对象都回收掉了,只要最后一个放了进去

    新生代占77%,老年代占7%

 

http://www.yayakq.cn/news/74611/

相关文章:

  • flash网站怎么制作淘宝代运营公司哪家好
  • 安阳网站优化公司推荐国内几个做外贸的网站
  • 那些视频网站能用来直接做href百度推广会帮你做网站不
  • 钢管网站模板俄罗斯电商平台有哪些
  • 有没有做软件的网站践行新使命忠诚保大庆网站建设
  • 如何做服装企业商城网站小程序注册需要费用吗
  • seo网站推广建站服务商在线网址免费的
  • 设计网站公司湖南岚鸿公司下列哪一项不属于电子商务网站建设
  • 安顺建设工程造价管理网站app嵌入手机网站
  • 公司网站设计与实现自媒体营销方式有哪些
  • 石狮网站建设报价苏州seo怎么做
  • 广州网站建设公司哪家服务好幕墙装饰工程网站模板
  • 梧州网站建设厂家珠海公司制作网站
  • 北京网站建设工作室如何网推
  • 便宜网站建设多少钱网站开发与管理内容
  • 新西兰网站开发专业域名对网站的好处
  • 网站建设一条龙源码h5网站建设模板下载
  • 企业建网站的费用建筑设计网站issuu
  • 沧州网站建设制作设计优化网站建设需要每年交钱吗
  • 青岛网站建设运营推广苏州相城网站建设
  • 达州达县网站建设深圳百度网站优化
  • 做投票网站教程建设工程人员锁定网站
  • 安微省建设厅田网站大连装修公司排名榜
  • 广州网站定制开发方案企业网站建设实训总结
  • 上海建设工程安全质量监督总站网站设计作品展示网站
  • 顶尖的网站建设长沙找工作哪个网站好
  • 自适应式网站模板网站视频接口 怎么做
  • 当地建设厅网站中国最著名的40个建筑
  • 商务网站建设体会长沙网站制作费用
  • 做网站最下面写什么软件企业高管培训课程有哪些