7-8垃圾箱分布

关于Java Garbage Collection的最大误解是什么?它的真实情况如何?

小时候,我的父母曾经告诉我,如果我学习不好,我将成为垃圾收集者。 他们几乎不知道,垃圾回收实际上是很棒的。 也许这就是为什么即使在Java世界中,许多开发人员也会误解GC算法:它们如何工作,GC如何影响其应用程序以及您可以对此做些什么。 这就是为什么我们求助 Java性能调优专家Haim Yadid并将Java性能调优指南放到Takipi博客上的原因。

新帖:关于垃圾回收的7件事您以为您知道-完全错了http://t.co/3QJLJuKCRq pic.twitter.com/aqQEF0zTkK

— Takipi(@takipid) 2015年4月6日

由于对性能调优指南的兴趣,在此后续文章中,我们决定收集一些有关垃圾回收的流行观点,并向您展示为什么它们是完全错误的。 以下是前7名:

1.只有一个垃圾收集器

不,并且4也不是正确的答案。 HotSpot JVM总共有4个垃圾收集器: 串行,并行/吞吐量。 CMS,并在块G1上新建一个孩子 。 但是,还有更多,还有非标准的垃圾收集器,还有更多冒险的实现,例如Shenandoah或其他JVM使用的收集器(例如C4, Azul的不间断收集器)。 HotSpot的默认值是并行/吞吐量收集器,通常它不是您的应用程序的最佳选择。 例如,CMS和G1收集器将导致较少的GC暂停。 但是,当出现暂停时,其持续时间很可能会比Parallel收集器引起的持续时间更长。 另一方面,对于相同大小的堆,并行收集器通常可实现更高的吞吐量。

总结:根据您的要求选择合适的垃圾收集器:可接受的GC暂停频率和持续时间。

2.并行=并发

垃圾回收周期可以是STW(紧急停止)并导致GC暂停,也可以并发执行而无需停止应用程序。 当我们更进一步时,GC算法本身可以是串行(单线程)或并行(多线程)的。 这就是为什么当我们提到并发GC时,它不一定意味着它是并行完成的;反之,当我们提到串行GC时,它并不一定意味着它会引起暂停。 在垃圾回收世界中,Concurrent和Parallel是两个绝对不同的术语,其中Concurrent是指GC周期,而Parallel是指GC算法本身。

总结:垃圾回收是一个两步游戏,调用GC周期的方式及其进行业务的方式是两件不同的事情。

3. G1解决了所有问题

G1收集器是Java 7中引入的,并且经过了许多更改和修改,是JVM垃圾收集器的最新成员。 主要优势在于,它解决了CMS收集器常见的碎片问题:GC循环释放旧一代的内存块,并使它看起来像瑞士奶酪,直到一会儿JVM无法处理并不得不停止并停止运行。处理碎片。 但这还不是故事的结局,在某些情况下其他收藏家的表现可能优于G1。 这完全取决于您的要求。

要点:没有所有GC问题的奇迹解决方案,需要进行实验以帮助您为JVM选择正确的收集器。

4.平均交易时间是最重要的指标

如果仅监视服务器中的平均交易时间,那么您会错过异常值。 人们对系统用户的破坏性知之甚少。 例如,通常需要100毫秒以下的事务可能会受到GC暂停的影响,并且需要一分钟才能完成。 如果您只查看平均交易时间,那么除了用户以外的任何人都不会注意到。 现在考虑1%或更多用户的这种情况,您会发现仅查看平均值就可以轻松忽略它。 有关与延迟相关的更多问题以及解决方法,请点击此处查看Gil Tene的博客。

要点:密切注意异常值,了解系统在第99个百分位数( 不是1% )上的表现。

5.降低新的对象分配率将改善GC行为

我们可以将系统中的对象大致分为三类:长期存在的对象,通常对它们我们无能为力,导致最大问题的中期存在的对象,以及通常被释放并导致长期生存的短期对象分配Swift,因此它们在下一个GC周期中消失了。 中度对象是那些注重其分配率可以带来积极结果的对象。 集中精力于短期和长期的对象通常不会被证明是有效的,控制中期对象通常是一项艰巨的任务。

要点:并不是唯一的对象分配速率会限制您的服务器,而是造成所有麻烦的对象类型。

6.调整可以解决所有问题

如果您的应用程序需要保持经常更改的大型状态,那么调整JVM的堆并不会带来太多好处。 GC长时间停顿是不可避免的。 可以在体系结构更改方面提出解决方案,以确保具有关键过程/瓶颈影响响应时间的流程不会包含大状态。 大型状态和响应能力不能很好地结合在一起:将其分解为不同的流程将是解决之道。

总结:并非所有问题都可以通过调整JVM标志来解决,有时您只需要回到绘图板上即可。

7. GC日志会导致大量开销

这是完全不正确的,尤其是默认的日志设置。 数据非常有价值,并且Java 7引入了挂钩来控制它们的大小,并确保它们不会耗尽您的所有硬盘驱动器。 如果您不收集GC日志数据,那么您将失去了解JVM垃圾收集在生产中的行为的唯一途径。 可接受的GC开销通常有5%的上限,要知道系统中的收费GC暂停产生了什么样的费用并将其最小化,付出的代价是很小的。

总结:竭尽所能,在生产中从系统中获取最多的数据。 那里是一个完全不同的世界。

结论

我们希望这些内容能帮助您更好地了解Java中垃圾回收的真正工作方式。 您是否在应用程序中认识到其中一些问题? 您是否遇到其他更常见的垃圾回收错误? 在下面的评论部分让我们知道。

翻译自: https://www.javacodegeeks.com/2015/04/7-things-you-thought-you-knew-about-garbage-collection-and-are-totally-wrong.html

7-8垃圾箱分布

7-8垃圾箱分布_您认为有关垃圾收集的7件事-完全错了相关推荐

  1. 归纳推理测试没做完_敷完面膜不要做4件事,不但敷了面膜没效果,皮肤还变差了...

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到内容了.每天都有分享.完全是免费订阅,请放心关注. 夏天最惬意的事是什么呢?必须是洗完脸后,来张面膜贴 ...

  2. 查询成绩最好的前两名_一级建造师成绩查询前这几件事很重要

    2020年已经只剩下一个月的时间了,12月份是我们向2020年说再见的月份,同样也是我们一级建造师查分的月份,不知不觉中一级建造师考试已经过去两个多月的时间了,马上就到了查分这个令人心动的的时间节点来 ...

  3. keyshot卡住了还能保存吗_相机希望你知道的13件事 keyshot相机切换事件

    一次我去我学校的球场看足球比赛,遇见一对父母,他们在为自己的孩子拍摄,全程用自动挡,还对着几百米远奔跑的儿童开闪光灯!老实说作为一名严肃的摄影爱好者我有深深的强迫症,于是忍不住就上去跟他们聊开手把手教 ...

  4. 非线性流形学习技术_非技术人员可以学习的100件事

    非线性流形学习技术 My lovely wife has an MBA, speaks 5 languages, and is currently in school to get a third ( ...

  5. 一等公民 二等公民_关于公民众筹的四件事你不知道

    一等公民 二等公民 众筹无处不在. 人们正在使用它来资助手表,漫画书,甚至著名的电影导演也在这样做. 在当今全球价值60亿美元的行业中,我认为最有趣,最具颠覆性和令人兴奋的工作是基于捐赠的众筹. 每年 ...

  6. PAT天梯赛练习题——L3-005. 垃圾箱分布(暴力SPFA)

    L3-005. 垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁 ...

  7. 【CCCC】L3-005 垃圾箱分布 (30分),Dijkstra跑n遍 = 多源最短路,emm

    problem L3-005 垃圾箱分布 (30分) 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住.所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方,同时还要保证每 ...

  8. gamma分布_如何通俗的理解伽马(gamma)函数

    如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例 我为什么要在乎garmma分布? 使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等. 对于数 ...

  9. 原子设计_您需要了解的有关原子设计的4件事

    原子设计 重点 (Top highlight) Industries such as Architecture or Industrial Design have developed smart mo ...

最新文章

  1. hive导出数据到本地文件报错解决方法
  2. Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
  3. 解释性的语言vs编译性语言
  4. USACO 3.2 kimbits DP
  5. 操作系统(十一)处理机调度概述
  6. php中html富文本编辑器,php + wangEditor 富文本编辑器的配置
  7. 酒鬼随机漫步(一个矢量类)
  8. 作者:伍筱聪(1989-),女,中国科学院上海天文台助理工程师
  9. FileFilter接口 java
  10. C while 循环
  11. .NET——NPOI操作excel
  12. python绘制风向玫瑰图和污染物玫瑰图
  13. matlab信号与系统论文,基于MATLAB的《信号与系统》课程教学研究
  14. 读《自己动手写操作系统》(于渊著)第一节
  15. 木马分析(控制分析)实验
  16. 软件架构之分层模式 Layered Architecture
  17. P1427 小鱼的数字游戏——栈的初次会面
  18. 储氢合金/金属氢化物吸放氢动力学模型——Chou模型
  19. androidx指纹验证
  20. 2019最新升级【超能版】 vbox硬件级虚拟机系统 去虚拟化去vm标识 支持批量启动 批量克隆 CPA网赚挂机电商 virtualbox

热门文章

  1. 2018CCF-CSP 5.二次求和(点分治)
  2. Codeforces Round #675 (Div. 2)——F主席树待补?
  3. 【暴力】I Liked Matrix!
  4. Sentinel(二十二)之使用Nacos存储规则
  5. Hadoop入门(十七)Mapreduce的多表关联程序
  6. MySQL format()函数
  7. 对于自绝对父相的理解
  8. 【Ajax】创建并封装
  9. 关于链表的简单创建和遍历
  10. 【最全最详细】publiccms其他常用代码片段(内容、站点)