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

现在做一个网站系统多少钱wordpress新窗口打开所有外链

现在做一个网站系统多少钱,wordpress新窗口打开所有外链,大学校园网站建设方案,东莞网站优化关键词排名Java NIO为何导致堆外内存OOM了#xff1f; 描述 某天报警#xff1a;某台机器部署的一个服务突然无法访问。谨记第一反应登录机器查看日志#xff0c;因为服务挂掉#xff0c;很可能因OOM。这个时候在机器的日志中发现了如下的一些信息#xff1a; nio handle failed j…Java NIO为何导致堆外内存OOM了 描述 某天报警某台机器部署的一个服务突然无法访问。谨记第一反应登录机器查看日志因为服务挂掉很可能因OOM。这个时候在机器的日志中发现了如下的一些信息 nio handle failed java.lang.OutOfMemoryError: Direct buffer memory at org.eclipse.jetty.io.nio.xxxx at org.eclipse.jetty.io.nio.xxxx at org.eclipse.jetty.io.nio.xxxx表明确实为OOM问题是哪个区导致的呢可以看到是Direct buffer memory还看到一大堆jetty相关方法调用栈仅凭这些日志就能分析OOM原因。 Direct buffer memory 堆外内存JVM堆内存之外的一块内存不是由JVM管理但Java代码却能在JVM堆外使用一些内存空间。这些空间就是Direct buffer memory即直接内存这块内存由os直接管理。但称其为直接内存有些奇怪我没更爱称其为“堆外内存”。 Jetty作为JVM进程运行我们写好的系统的流程 这次OOM是Jetty在使用堆外内存时导致。可推算得Jetty可能在不停使用堆外内存然后堆外内存空间不足没法使用更多堆外内存就OOM了。 Jetty不停使用堆外内存 解决OOM的底层技术 Jetty既然是用Java写的那他是如何通过Java代码申请堆外内存的然后这个堆外内存空间又如何释放呢这涉及Java的NIO底层。JVM的性能优化相对还是较为容易一些的但若是解决OOM除了一些弱智和简单的如有人在代码里不停创建对象。其他很多生产的OOM问题都有点技术难度需要扎实技术。 堆外内存是如何申请的又是如何释放的 如在Java代码里要申请使用一块堆外内存空间是使用DirectByteBuffer这个类你可以通过这个类构建一个DirectByteBuffer的对象这个对象本身是在JVM堆内存里的。 但是你在构建这个对象的同时就会在堆外内存中划出来一块内存空间跟这个对象关联起来我们看看下面的图你就对他们俩的关系很清楚了。 因此在分配堆外内存时基本就这思路。 如何释放堆外内存 当你的DirectByteBuffer对象无人引用成垃圾后就会在某次YGC或Full GC时被回收。只要回收一个DirectByteBuffer对象就会释放其关联的堆外内存 那为何还出现堆外内存溢出 若你创建很多DirectByteBuffer对象占了大量堆外内存然后这些DirectByteBuffer对象还无GC线程来回收那就不会释放呀当堆外内存都被大量DirectByteBuffer对象关联使用若你再要使用额外堆外内存就报内存溢出何时会出现大量DirectByteBuffer对象一直存活导致大量堆外内存无法释放还可能是系统高并发创建过多DirectByteBuffer占用大量堆外内存此时再继续想要使用堆外内存就会OOM但该系统显然不是这种情况。 真正的堆外内存溢出原因 可以用jstat观察线上系统运行情况同时根据日志看看一些请求的处理耗时分析过往gc日志还看了一下系统各个接口的调用耗时后分析思路如下。 首先看接口调用耗时系统并发量不高但他每个请求处理较耗时平均每个请求需1s。 然后jstat发现随系统不停被调用会一直创建各种对象包括Jetty本身不停创建DirectByteBuffer对象去申请堆外内存空间接着直到Eden满就会触发YGC 但往往在进行GC的一瞬间可能有的请求还没处理完此时就有不少DirectByteBuffer对象处于存活状态还没被回收当然之前不少DirectByteBuffer对象对应的请求可能处理完毕了他们就可以被回收了。 此时肯定会有一些DirectByteBuffer对象以及一些其他的对象是处于存活状态的就需转入Survivor区。记得该系统上线时内存分配极不合理就给了年轻代一两百M老年代却给七八百M导致年轻代中的Survivor只有10M。因此往往在YGC后一些存活下的对象包括了一些DirectByteBuffer会超过10M没法放入Survivor直接进入Old 于是反复的执行这样的过程导致一些DirectByteBuffer对象慢慢进入OldOld的DirectByteBuffer 对象越来越多而且这些DirectByteBuffer都关联很多堆外内存 这些老年代里的DirectByteBuffer其实很多都是可以回收的状态了但是因为老年代一直没塞满所以没触发full gc也就自然不会回收老年代里的这些DirectByteBuffer了当然老年代里这些没有被回收的DirectByteBuffer就一直关联占据了大量的堆外内存空间了 直到最后当你要继续使用堆外内存时所有堆外内存都被老年代里大量的DirectByteBuffer给占用了虽然他们可以被回收但是无奈因为始终没有触发老年代的full gc所以堆外内存也始终无法被回收掉。最后导致OOM 这Java NIO怎么看起来这么沙雕 Java NIO没考虑过会发生这种事吗 考虑了他知道可能很多DirectByteBuffer对象也许没人用了但因未触发gc就导致他们一直占据堆外内存。Java NIO做了如下处理每次分配新的堆外内存时都调用System.gc()提醒JVM主动执行以下GC去回收掉一些垃圾没人引用的DirectByteBuffer对象释放堆外内存空间。 只要能触发GC去回收掉一些没人引用的DirectByteBuffer就会释放一些堆外内存自然就可以分配更多对象到堆外内存。但因为我们又在JVM设置了 -XX:DisableExplicitGC导致这System.gc()不生效因此导致OOM。 终极优化 项目有如下问题内存设置不合理导致DirectByteBuffer对象一直慢慢进入老年代堆外内存一直无法释放设置了-XX:DisableExplicitGC导致Java NIO无法主动提醒去回收掉一些垃圾DIrectByteBuffer对象也导致了无法释放堆外内存对此就该合理分配内存给年轻代更多内存让Survivor区域有更大的空间放开-XX:DisableExplicitGC这个限制让System.gc()生效优化后DirectByteBuffer一般就不会不断进入老年代了。只要他停留在年轻代随着young gc就会正常回收释放堆外内存了。只要放开-XX:DisableExplicitGC限制Java NIO发现堆外内存不足了自然会通过System.gc()提醒JVM去主动垃圾回收回收掉一些DirectByteBuffer进而释放堆外内存。 ----------------------------------------------------------------------------------- offer突击训练营简介 1针对不知道怎么面试面试没有信心的小伙伴我们会给你一个offer保障。 2我们会监督你15-20天内把面试体系技术点掌握至少7成这样足够你去找到满意的工作了。 3我们是面向面试学习指导不会带你们去写代码会把项目真实开发的迭代过程和技术细节如何实现业务功能都详细教清楚你能在面试中流畅表达清楚就行了项目经验你不用担心(技术老师提供的真实项目经验肯定拿的出手)自己学和别人带着系统学效率完全不一样。 详情请点击这里offer突击训练营给你一个offer的保障求职跳槽的看过来
http://www.sadfv.cn/news/117663/

相关文章:

  • 国外手机设计网站免费手机照片恢复软件
  • 卖酒的网站做线下怎么做wordpress循环插件
  • 别人做的网站自己根目录吗3d设计软件有哪些软件
  • 昆明网站设计公司360浏览器网页
  • 将网站保存怎么做手机浏览wordpress
  • 手机网站app制作公司个人电脑做外网网站
  • 企业网站建设咨询个人业务网站制作
  • 淄博网站代运营被骗怎么追回
  • 网站繁体和中文这么做帝国做网站怎么加视频
  • 网站首页的psd怎么做电商网站开发需要什么语言
  • 规划管理部门的网站建设广州网站运营专注乐云seo
  • 如何在12366网站上做实名认证苏州网页制作培训
  • 简单个人网站欣赏凡科网手机版下载
  • 1999年怎样建立企业网站可以上传高清图片的网站并做外链
  • 江苏林润建设工程有限公司网站网站慢的原因
  • 成都企业网站建设凡科网登录手机端
  • 能直接用网站做海报吗互联网技术对人力资源管理的影响有哪些
  • 北京网站建设公司网站优化韩式风格的网页设计欣赏
  • 卖印花图案设计网站娱乐城网站建设
  • 取消网站备案网站建设外文版政策文件
  • 济南网站建设制作设计长沙网站搜索排名
  • 国外企业网站建设模型网站制作价格 上海
  • qt做网站cms进行网站开发
  • 用html做一号店网站怎么做pc网站建设需要提供哪些资料
  • 做公司网站要什么资料网站开发多少钱一天是
  • 做国内网站花费2024年重大新闻摘抄
  • 网站修改关键词企业网站建设 总结
  • 网站代更新沈阳妇科医院排名前十有哪些
  • 用html5制作个人网站网站建设岗位廉政风险防控
  • 自适应型网站建设推荐解决网站兼容性问题