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

网站版面的图文是怎么做的大数据推广公司

网站版面的图文是怎么做的,大数据推广公司,做百科权威网站有哪些,潜山网站建设前言 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。。 finalize的作用 (1)finalize()与C中的析构函数不是对应的。C中的析构函数调用的时机是确定的(对象离开作用域或delete掉&a…

前言

finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。。

finalize的作用

(1)finalize()与C++中的析构函数不是对应的。C++中的析构函数调用的时机是确定的(对象离开作用域或delete掉),但Java中的finalize的调用具有不确定性

(2)不建议用finalize方法完成“非内存资源”的清理工作,但建议用于:① 清理本地对象(通过JNI创建的对象);② 作为确保某些非内存资源(如Socket、文件等)释放的一个补充:在finalize方法中显式调用其他资源释放方法。其原因可见下文[finalize的问题

finalize的问题

(1)一些与finalize相关的方法,由于一些致命的缺陷,已经被废弃了,如System.runFinalizersOnExit()方法、Runtime.runFinalizersOnExit()方法

(2)System.gc()与System.runFinalization()方法增加了finalize方法执行的机会,但不可盲目依赖它们

(3)Java语言规范并不保证finalize方法会被及时地执行、而且根本不会保证它们会被执行

(4)finalize方法可能会带来性能问题。因为JVM通常在单独的低优先级线程中完成finalize的执行

(5)对象再生问题:finalize方法中,可将待回收对象赋值给GC Roots可达的对象引用,从而达到对象再生的目的

(6)finalize方法至多由GC执行一次(用户当然可以手动调用对象的finalize方法,但并不影响GC对finalize的行为)

 

finalize的执行过程(生命周期)

(1) 首先,大致描述一下finalize流程:当对象变成(GC Roots)不可达时,GC会判断该对象是否覆盖了finalize方法,若未覆盖,则直接将其回收。否则,若对象未执行过finalize方法,将其放入F-Queue队列,由一低优先级线程执行该队列中对象的finalize方法。执行finalize方法完毕后,GC会再次判断该对象是否可达,若不可达,则进行回收,否则,对象“复活”。

(2) 具体的finalize流程:

对象可由两种状态,涉及到两类状态空间,一是终结状态空间 F = {unfinalized, finalizable, finalized};二是可达状态空间 R = {reachable, finalizer-reachable, unreachable}。各状态含义如下:

 

unfinalized: 新建对象会先进入此状态,GC并未准备执行其finalize方法,因为该对象是可达的

finalizable: 表示GC可对该对象执行finalize方法,GC已检测到该对象不可达。正如前面所述,GC通过F-Queue队列和一专用线程完成finalize的执行

finalized: 表示GC已经对该对象执行过finalize方法

reachable: 表示GC Roots引用可达

finalizer-reachable(f-reachable):表示不是reachable,但可通过某个finalizable对象可达

unreachable:对象不可通过上面两种途径可达

 

 

 

 

 

(1)新建对象首先处于[reachable, unfinalized]状态(A)

(2)随着程序的运行,一些引用关系会消失,导致状态变迁,从reachable状态变迁到f-reachable(B, C, D)或unreachable(E, F)状态

(3)若JVM检测到处于unfinalized状态的对象变成f-reachable或unreachable,JVM会将其标记为finalizable状态(G,H)。若对象原处于[unreachable, unfinalized]状态,则同时将其标记为f-reachable(H)。

(4)在某个时刻,JVM取出某个finalizable对象,将其标记为finalized并在某个线程中执行其finalize方法。由于是在活动线程中引用了该对象,该对象将变迁到(reachable, finalized)状态(K或J)。该动作将影响某些其他对象从f-reachable状态重新回到reachable状态(L, M, N)

(5)处于finalizable状态的对象不能同时是unreahable的,由第4点可知,将对象finalizable对象标记为finalized时会由某个线程执行该对象的finalize方法,致使其变成reachable。这也是图中只有八个状态点的原因

(6)程序员手动调用finalize方法并不会影响到上述内部标记的变化,因此JVM只会至多调用finalize一次,即使该对象“复活”也是如此。程序员手动调用多少次不影响JVM的行为

(7)若JVM检测到finalized状态的对象变成unreachable,回收其内存(I)

(8)若对象并未覆盖finalize方法,JVM会进行优化,直接回收对象(O)

(9)注:System.runFinalizersOnExit()等方法可以使对象即使处于reachable状态,JVM仍对其执行finalize方法

 

http://www.zhongyajixie.com/news/353.html

相关文章:

  • 镇江网站公司广州seo公司哪个比较好
  • 市住建设局网站发帖推广哪个平台好
  • 杭州制造业企业做网站安徽网络优化公司排名
  • 关键词seo优化排名长沙自动seo
  • 珠海网站建设联系方式网站推广四个阶段
  • 深圳网站开发招聘十大新媒体平台有哪些
  • 厦门网站建设方案维护网络营销推广公司
  • 网站开发好就业吗百度云
  • 徐州网站制作软件开发工程师
  • 私自做彩票网站代购犯法么学生制作个人网站
  • 邢台高端网站建设磁力吧最佳搜索引擎
  • 广州建网站价格视频外链工具
  • c 做的网站怎么上传江苏seo哪家好
  • 手机网站制作套餐百度 营销推广怎么操作
  • 一般请人做网站和app多少钱网址检测
  • 网站建设和管理的总结怎么写百度打车客服电话
  • 重庆做网站建设的公司关键词排名
  • 绍兴公司网站建设seo网站优化公司
  • 做微课的网站电商培训大概多少学费
  • 专做韩国代购的网站百度上怎么免费开店
  • 安徽长江建设集团有限公司网站上海优化公司
  • 如何提高网站速度seo查询官方网站
  • 淘宝网站优惠券统一修改怎么做深圳高端网站制作公司
  • 哪个网站可以做私单百度打开
  • 国外手机网站昆明网站seo优化
  • 去哪里做网站比较好网页设计实训报告
  • 深圳 三人 网站建设厦门人才网招聘最新信息
  • 企业大型网站开发需要多少钱站长工具seo综合查询广告
  • 广州高端网站建设爱站网长尾关键词挖掘查询工具
  • google网站登录入口社交网络推广方法有哪些