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

公司怎么注册官方网站网站做生鲜线下推广建议

公司怎么注册官方网站,网站做生鲜线下推广建议,企业网站建设与管理作业,中国十大建设集团1.OopMap之前我们提到#xff0c;在正式的GC之前总是需要进行可达性分析来查找内存中所有存活的对象#xff0c;以便GC能够正确的回收已经死亡的对象。那么对于一个十分复杂的系统#xff0c;每次GC的时候都要遍历所有的引用肯定是不现实的。因为在可达性分析的时候#xf…1.OopMap之前我们提到在正式的GC之前总是需要进行可达性分析来查找内存中所有存活的对象以便GC能够正确的回收已经死亡的对象。那么对于一个十分复杂的系统每次GC的时候都要遍历所有的引用肯定是不现实的。因为在可达性分析的时候需要进行Stop The World程序中的线程需要停止来配合可达性分析。就好像是你女朋友在打扫卫生的时候(什么你还没有女朋友这还能难道程序员了new 一个啊)肯定不会让你走来走去的。所以你肯定在内心里也希望你女朋友打扫卫生快一点因为你的膀胱已经快要爆炸了。对于程序来说有也一样也希望GC的时候快一点以便让程序高效地完成工作。所以每次直接遍历整个引用链肯定是不现实的。 为了应对这种尴尬的问题最早有保守式GC和后来的准确式GC。这里准确式GC就会提到一个OopMap用来保存类型的映射表。保守式GC在进行GC的时候会从一些已知的位置(GC Roots)开始扫描内存扫描到一个数字就判断他是不是可能是指向GC堆中的一个指针(这里会涉及上下边界检查(GC堆的上下界是已知的)、对齐检查(通常分配空间的时候会有对齐要求假如说是4字节对齐那么不能被4整除的数字就肯定不是指针)之类的。)。然后一直递归的扫描下去最后完成可达性分析。这种模糊的判断方法因为无法准确判断一个位置上是否是真的指向GC堆中的指针所以被命名为保守式GC。这种可达性分析的方式因为不需要准确的判断出一个指针所以效率快但是也正因为这种特点他存在下面两个明显的缺点因为是模糊的检查所以对于一些已经死掉的对象很可能会被误认为仍有地方引用他们GC也就自然不会回收他们从而引起了无用的内存占用就是典型的占着茅坑不拉屎造成资源浪费。由于不知道疑似指针是否真的是指针所以它们的值都不能改写移动对象就意味着要修正指针。换言之对象就不可移动了。有一种办法可以在使用保守式GC的同时支持对象的移动那就是增加一个间接层不直接通过指针来实现引用而是添加一层“句柄”(handle)在中间所有引用先指到一个句柄表里再从句柄表找到实际对象。这样要移动对象的话只要修改句柄表里的内容即可。但是这样的话引用的访问速度就降低了。Sun JDK的Classic VM用过这种全handle的设计但效果实在算不上好。2.准确式GC与保守式GC相对的就是准确式GC何为准确式GC就是我们准确的知道某个位置上面是否是指针对于java来说就是知道对于某个位置上的数据是什么类型的这样就可以判断出所有的位置上的数据是不是指向GC堆的引用包括栈和寄存器里的数据。网上看了下说是实现这种要求的方法有好几种但是在java中实现的方式是从我外部记录下类型信息存成映射表在HotSpot中把这种映射表称之为OopMap不同的虚拟机名称可能不一样。实现这种功能需要虚拟机的解释器和JIT编译器支持由他们来生成OopMap。生成这样的映射表一般有两种方式每次都遍历原始的映射表循环的一个个偏移量扫描过去这种用法也叫“解释式”为每个映射表生成一块定制的扫描代码(想像扫描映射表的循环被展开的样子)以后每次要用映射表就直接执行生成的扫描代码这种用法也叫“编译式”。总而言之GC开始的时候就通过OopMap这样的一个映射表知道在对象内的什么偏移量上是什么类型的数据而且特定的位置记录下栈和寄存器中哪些位置是引用。2.SafePoint(安全点)上面讲到了为了快点进行可达性的分析使用了一个引用类型的映射表可以快速的知道对象内或者栈和寄存器中哪些位置是引用了。但是随着而来的又有一个问题就是在方法执行的过程中 可能会导致引用关系发生变化那么保存的OopMap就要随着变化。如果每次引用关系发生了变化都要去修改OopMap的话这又是一件成本很高的事情。所以这里就引入了安全点的概念。什么是安全点OopMap的作用是为了在GC的时候快速进行可达性分析所以OopMap并不需要一发生改变就去更新这个映射表。只要这个更新在GC发生之前就可以了。所以OopMap只需要在预先选定的一些位置上记录变化的OopMap就行了。这些特定的点就是SafePoint(安全点)。由此也可以知道程序并不是在所有的位置上都可以进行GC的只有在达到这样的安全点才能暂停下来进行GC。既然安全点决定了GC的时机那么安全点的选择就至为重要了。安全点太少会让GC等待的时间太长太多会浪费性能。所以安全点的选择是以程序“是否具有让程序长时间执行的特征”为标准的(这句话是从书上看来的不知道作者自己能不能看明白这话啥意思反正我是看不懂)所以我们这里了解一下结果就行了。一般会在如下几个位置选择安全点循环的末尾方法临返回前 / 调用方法的call指令后可能抛异常的位置还有一个需要考虑的问题就是如何让程序在要进行GC的时候都跑到最近的安全点上停顿下来。这里有两种方案抢断式中断抢断式中断就是在GC的时候让所有的线程都中断如果这些线程中发现中断地方不在安全点上的就恢复线程让他们重新跑起来直到跑到安全点上。(现在几乎没有虚拟机采用这种方式原因不详)主动式中断主动式中断在GC的时候不会主动去中断线程仅仅是设置一个标志当程序运行到安全点时就去轮训该位置发现该位置被设置为真时就自己中断挂起。所以轮训标志的地方是和安全点重合的另外创建对象需要分配内存的地方也需要轮询该位置。3.安全区域安全点的使用似乎解决了OopMap计算的效率的问题但是这里还有一个问题。安全点需要程序自己跑过去那么对于那些已经停在路边休息或者看风景的程序(比如那些处在Sleep或者Blocked状态的线程)他们可能并不会在很短的时间内跑到安全点去。所以这里为了解决这个问题又引入了安全区域的概念。安全区域很好理解就是在程序的一段代码片段中并不会导致引用关系发生变化也就不用去更新OopMap表了那么在这段代码区域内任何地方进行GC都是没有问题的。这段区域就称之为安全区域。线程执行的过程中如果进入到安全区域内就会标志自己已经进行到安全区域了。那么虚拟机要进行GC的时候发现该线程已经运行到安全区域就不会管该线程的死活了。所以该线程在脱离安全区域的时候要自己检查系统是否已经完成了GC或者根节点枚举(这个跟GC的算法有关系)如果完成了就继续执行如果未完成它就必须等待收到可以安全离开安全区域的Safe Region的信号为止。
http://www.sadfv.cn/news/211975/

相关文章:

  • 做导购网站赚钱合肥seo网站建设费用
  • 嘉兴优化网站收费标准西安高端网页制作
  • 做网站多少钱西宁君博领先兴国电商网站建设
  • 报名网站建设价格无锡网站制作高端
  • 在川航网站购票后怎么做wordpress会员积分邀请
  • 家电网站建设方案设计师网单怎么做
  • 做网站推广需要什么专业进入公众号后打开网页
  • 做放单网站保定网络公司电话
  • 商城网站开发费用一般是多少备案网站名称 怎么填写
  • 北京海淀区网站建设成都平面设计公司有哪些
  • 想接做网站的单子wordpress 设置 logo
  • 长清区网站建设宣传html5编程入门自学
  • 闽候县建设局网站wordpress博客名字
  • 东莞网站seo方法调用别人网站注册表单
  • 中国万网首页seo网站优化培训怎么样
  • python能做网站开发吗wordpress购物商城代码
  • 成都成华区网站建设推广方式英语
  • 网站建设的实训总结网站10m数据库
  • 深圳网站优化课程哪里学网站原型设计
  • js网站页面效果代码创意设计英文翻译
  • 免费app做logo的网站做的网站需要买什么服务器
  • 访问一个网站的过程wordpress 用的什么框架
  • 营销网站开发isuos照片墙网站源码
  • 可以做点赞的网站网站流量对排名的影响
  • 做网站在哪里申请网络规划设计师工作
  • 泰州营销型网站建设创建全国文明城市要求注册志愿者
  • 苍南公司网站建设网上注册公司流程视频
  • 同信.长春网站建设做网站驻马店
  • 网站建设管理工作情况的通报北京朝阳区公司
  • 网站建设的硬件平台门户网站cms系统