ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-为什么等待太长时间才能从年轻一代中提升对象会导致效率降低?

2019-11-20 09:03:14  阅读:172  来源: 互联网

标签:performance jvm java garbage-collection


为什么等待太久才能从年轻一代中提拔物体会导致效率低下?

我看到的一种解释是,如果您等待太长时间来提升年轻一代,那么它将变得稀疏(即,现场演出的规模将变大,占年轻一代总人数的百分比).

但是,这如何导致效率降低?假设当年轻的世代稀疏时(例如,活动集是其大小的2%),收集它将花费X CPU时间,而在某个时间段T内进行50个收集将花费50X CPU时间.相反,如果我们等到它填满其大小的100%(这也将花费周期T发生),则一次收集所有内容只需要成比例地更长,即(100/2)* X = 50X CPU时间.因此,最终,花在收集上的总时间将是相同的–无论是按2%的占用率收集50次,还是按100%的占用率收集一次.第一种方法的效率优势在哪里?

解决方法:

复制中.

年轻一代中的大多数对象会死亡,并且根本不会与GC接触(是的,它实际上是幸存者收集器,活动对象被复制,剩下的就是空闲内存).

幸存了几个次要收藏的物体可能寿命很长.因此,一次又一次地复制它会不必要地浪费时间.

if instead we wait until it has filled up to 100% of its size

您没有此选项.每当伊甸园空间变满(几乎)时,您就会收集.如果仅使用其中的2%,则您什么也不做.但…

收集之后,您会发现可能只有2%的对象幸存了下来.

您的错误是误解了百分比.这2%是没有阈值的,它是结果,您无权更改它.您可以更改伊甸园的大小等,但对幸存者百分比的影响只是间接的.

标签:performance,jvm,java,garbage-collection
来源: https://codeday.me/bug/20191120/2042883.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有