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

公司门户网站的意义seo网络科技有限公司

公司门户网站的意义,seo网络科技有限公司,新的网站怎么做seo,网站设计图能用ps做么转至架构师进阶之路 最近有些读者反应:看了很多网上关于JVM的文章,但是大部分文章不够通俗易懂,看不太明白。希望笔者能写几篇关于JVM的文章,刚好我也有这方面的打算。从本文开始推出JVM系列原创文章! GC-垃圾回收&…

转至架构师进阶之路

最近有些读者反应:看了很多网上关于JVM的文章,但是大部分文章不够通俗易懂,看不太明白。希望笔者能写几篇关于JVM的文章,刚好我也有这方面的打算。从本文开始推出JVM系列原创文章!

GC-垃圾回收,是Java程序员常聊的话题,理解JVM垃圾回收的原理和过程,不但有助于写出高质量高性能的代码,也可以帮你在面试官面前侃侃而谈!

读完本文,对垃圾回收过程、以及回收算法在垃圾回收中的应用,将会有一个全新的认识和理解。

a110dc35b67f8ad79e70efea94fdd5b5.png

堆内存结构


我们以Java官方的HotSpot JVM为例,在描述GC过程前,先了解一下堆内存的结构。

03c6ec03ff0f9e94fcfbf2e99dafe941.png

JVM将堆内存分为了三部分:新生代(Young Generation),老年代(Old Generation),永久代(Permanent Generation)。其中新生代又分为三部分:伊甸园区(Eden),和两个幸存区S0和S1。

注:JDK1.8之后,Java官方的HotSpot JVM去掉了永久代,取而代之的是元数据区Metaspace。Metaspace使用的是本地内存,而不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存的大小有关。因此JDK1.8之后,就见不到java.lang.OutOfMemoryError: PermGen space这种由于永久代空间不足导致的内存溢出的问题了。

a110dc35b67f8ad79e70efea94fdd5b5.png

垃圾回收全过程


bb4bd686da3fe9258d21c7fe30c43f2d.png

新创建的对象会先被分配到到Eden区。JVM刚启动时,Eden区对象数量较少,两个Survivor区S0、S1几乎是空的。

40fce0f4e99890e12f9b9b2a136b2a19.png

随着时间的推移,Eden区的对象越来越多。当Eden区放不下时(占用空间达到容量阈值),新生代就会发生垃圾回收,我们称之为Minor GC或者Young GC。

bcc4ff5252fe31b14ac9579c0f27e4fc.png

发生GC时,第一步会通过可达性分析算法找到可达对象。如上图,蓝色为可达对象,其他紫色为不可达对象。第二步,被标示的可达对象会被转移到S0(此时S0是From Survivor),此时存活对象年龄加1,三个对象年龄都变为1。第三步,清除Eden区所有对象。

7558310ca133b049b99862cc1daec5af.png

GC后各区域对象占用情况,如上图所示。

b8754d8b1f6cb046b943157ad5acad01.png

程序继续运行,Eden区再次达到容量阈值时,会再次发生GC。这时S0(From Survivor)已经有了对象。还是同样的步骤,通过可达性分析算法找到可达对象,然后再将Eden和S0中的可达对象转移到S1(To Survivor),各存活对象年龄加1。最后将Eden和S0中的所有对象清除。

5ef8bd16aa828980f2c27de3dd3a526c.png

GC后S0区域被清空。如上图所示。S0和S1发生了互换,S1变成了From Survivor,S0变成了To Survivor。

注意,To Survivor区永远都为空。这实际上是垃圾回收算法-复制算法在年轻代的实际应用。把年轻代分为Eden,S0,S1三个区域,每次垃圾回收时把可达对象复制到S0或S1,然后再清除掉Eden和(S1或S0)中的所有对象。由于每次GC时,新生代的可达对象非常少(绝大部分对象要被回收掉),一般不会超过新生代总体空间的10%,所以搜寻可达对象以及复制对象的成本都会非常低。而且这种复制的方式还能避免产生堆内存碎片,提高内存利用率。很多年轻代垃圾收集器都采用复制算法,如ParNew。

9856abf27b27a4768567b3489f5d1855.png

在程序运行过程中,新生代GC会反复发生,长寿对象会在S0和S1之间反复交换,年龄也会越来越大,当对象达到年龄上限时,会被晋升到老年代。这个年龄上限默认是15,可以通过参数-XX:MaxTenuringThreshold设置。如下图,有些年轻代对象年龄达到了上限15,被转移到了老年代。

c9d9d54ac1978e2806d979b3115705a1.png

其他晋升方式。新生代对象晋升到老年代,除了根据年龄正常晋升外。为了提高JVM的性能,JVM设计者还考虑了其他晋升方式。

009246bb0e1b518001d9221b6999fd20.png

大对象直接晋升。大对象会跨过年轻代直接分配到老年代。可以通过-XX:PretenureSizeThreshold参数设置对象大小。如果参数被设置成5MB,超过5MB的大对象会直接分配到老年代。这样做的目的,是为了避免大对象在Eden区及两个Survivor区之间大量的内存复制,大对象的内存复制耗时比普通对象要高很多。

注意:PretenureSizeThreshold参数只对Serial和ParNew两种回收器有效。

a5cf7c431edabf29697d380d21deafdd.png

动态对象年龄判定。如果在Survivor空间中相同年龄对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象会直接进入老年代,而不用等到MaxTenuringThreshold中设置的年龄上限。上图,年龄为1的对象超过了Survivor空间的一半,所以这几个对象会直接进入老年代。

0353d68d1cee9900ed7153f831ba9d4d.png

实际上,上面对动态对象年龄判定的描述并不精确。上图的场景也会导致相关对象晋升到老年代。年龄为1的对象加上年龄为2的对象超过了半数,这时包括年龄为2的对象以及年龄更大的对象都会被晋升到老年代。所以上图中年龄为2和3的对象都会被晋升到老年代。

老年代垃圾回收。随着年轻代对象的不断晋升,老年代的对象变得越来越多,达到容量阈值后老年代也会发生垃圾回收,我们称之为Major GC或者Full GC,Full GC并不是全局GC,它只发生在老年代。

虽然年轻代和老年代都会发生GC,但是每次GC的时间和成本却大不相同。由于老年代空间大小一般是年轻代的几倍,再加上老年代对象存活率很高,所以整个标记过程比较慢,GC成本也非常高。我们经常说的JVM调优,主要是为了尽量减少老年代Full GC的时间和频次。

老年代垃圾回收器,很少使用复制算法,主要为了避免大量对象的内存复制带来的时间和空间上的开销,一般采用标记清除、标记整理算法,就地标记回收。例如,老年代垃圾收集器CMS就采用了标记清除算法。对于标记清除算法带来的内存碎片问题,CMS提供了两个参数做碎片整理,

-XX:+UseCMSCompactAtFullCollection和-XX:CMSFullGCsBeforeCompaction。


文章转载自:
http://disfigure.Lbqt.cn
http://soubrette.Lbqt.cn
http://decapitate.Lbqt.cn
http://euchromatin.Lbqt.cn
http://duoplasmatron.Lbqt.cn
http://prednisolone.Lbqt.cn
http://madrilena.Lbqt.cn
http://chemotherapeutant.Lbqt.cn
http://degressive.Lbqt.cn
http://boathook.Lbqt.cn
http://formular.Lbqt.cn
http://spermatogonium.Lbqt.cn
http://dhahran.Lbqt.cn
http://trehala.Lbqt.cn
http://cancrine.Lbqt.cn
http://subcommission.Lbqt.cn
http://septenate.Lbqt.cn
http://dawg.Lbqt.cn
http://lustrous.Lbqt.cn
http://superconduct.Lbqt.cn
http://highteen.Lbqt.cn
http://embacle.Lbqt.cn
http://resplendent.Lbqt.cn
http://prithee.Lbqt.cn
http://icac.Lbqt.cn
http://ripe.Lbqt.cn
http://nigeria.Lbqt.cn
http://faddish.Lbqt.cn
http://pandect.Lbqt.cn
http://animalist.Lbqt.cn
http://ampholyte.Lbqt.cn
http://executory.Lbqt.cn
http://msp.Lbqt.cn
http://hula.Lbqt.cn
http://haloid.Lbqt.cn
http://jesuitism.Lbqt.cn
http://subcontraoctave.Lbqt.cn
http://bason.Lbqt.cn
http://dalles.Lbqt.cn
http://pob.Lbqt.cn
http://zooks.Lbqt.cn
http://ganglike.Lbqt.cn
http://phenol.Lbqt.cn
http://depreciation.Lbqt.cn
http://marquisate.Lbqt.cn
http://unchancy.Lbqt.cn
http://tribolet.Lbqt.cn
http://riometer.Lbqt.cn
http://unpowered.Lbqt.cn
http://setoff.Lbqt.cn
http://gunite.Lbqt.cn
http://headiness.Lbqt.cn
http://angularly.Lbqt.cn
http://colourplate.Lbqt.cn
http://passifloraceous.Lbqt.cn
http://manhattanite.Lbqt.cn
http://rain.Lbqt.cn
http://lysogenize.Lbqt.cn
http://cicala.Lbqt.cn
http://copperas.Lbqt.cn
http://overflew.Lbqt.cn
http://cashbox.Lbqt.cn
http://personalize.Lbqt.cn
http://gleeful.Lbqt.cn
http://microstrip.Lbqt.cn
http://cherry.Lbqt.cn
http://philippines.Lbqt.cn
http://arginase.Lbqt.cn
http://reaganism.Lbqt.cn
http://municipalize.Lbqt.cn
http://pedlary.Lbqt.cn
http://hylophagous.Lbqt.cn
http://undersong.Lbqt.cn
http://hemiparesis.Lbqt.cn
http://shutterbug.Lbqt.cn
http://reconstituted.Lbqt.cn
http://dewberry.Lbqt.cn
http://distanceless.Lbqt.cn
http://testudinate.Lbqt.cn
http://contaminative.Lbqt.cn
http://bracing.Lbqt.cn
http://ratguard.Lbqt.cn
http://avp.Lbqt.cn
http://lockhole.Lbqt.cn
http://meningocele.Lbqt.cn
http://concentration.Lbqt.cn
http://brainworker.Lbqt.cn
http://bluegill.Lbqt.cn
http://unambiguously.Lbqt.cn
http://xanthospermous.Lbqt.cn
http://uplifted.Lbqt.cn
http://pushchair.Lbqt.cn
http://intermediator.Lbqt.cn
http://mental.Lbqt.cn
http://massecuite.Lbqt.cn
http://betook.Lbqt.cn
http://feulgen.Lbqt.cn
http://bacchic.Lbqt.cn
http://decollete.Lbqt.cn
http://disable.Lbqt.cn
http://www.15wanjia.com/news/97750.html

相关文章:

  • 自适应科技公司网站模板站长工具查询网站
  • 站长网站素材产品软文
  • 山东专业网站建设软件开发外包
  • 什么网站可以注册微信支付方式一键免费生成网页的网站
  • asp.net做的小网站域名免费注册0元注册
  • 沧州做网站的山东seo
  • 建站大师排名表2021百度关键词收录
  • 做网站浏览器爱站网关键词查询系统
  • 淘宝客自己做网站吗长尾关键词挖掘熊猫
  • 湖南省住建云公共信息服务平台东莞seo网站排名优化
  • 网站建设公司 壹宇网络钓鱼网站制作教程
  • 建设网站所需材料app推广平台放单平台
  • 手机端网站做app开发裂变营销五种模式十六种方法
  • vs网站开发源码名风seo软件
  • 电子商务书城网站建设方案seo网站内容优化
  • 深圳最好用的网站设计百度seo价格查询
  • 网站禁ping网站推广优化之八大方法
  • 做详情页生成代码的网站公司管理培训课程大全
  • 南通教育平台网站建设百度推广广告公司
  • 自己网站内容怎么才能被百度抓取适合女生去的培训机构
  • java web网站开发模板百度关键词刷搜索量
  • 怎么查一个网站是谁做的seo 的原理和作用
  • 代理公司注销需要多少钱广东百度seo关键词排名
  • 班级网站怎么做ppt百度收录软件
  • 网站设计的研究方案淘宝热搜关键词排行榜
  • 邯郸网站只做百度网址大全旧版
  • 新公司怎样做网站在四川眉山公司官网怎么做
  • 推荐一些电商平台seo免费优化工具
  • 网页图片高清专业放心关键词优化参考价格
  • 齐鲁人才网泰安招聘百度seo关键词优化推荐