240 发简信
IP属地:上海
  • 我这篇文章是为了解答为何我们要避免在年轻代GC的时候扫描老年代。所以前面的假设都是,我们并没有剪枝这种逻辑。也就是从最朴素的两个分代假设出发,从年轻代出发全部遍历一遍,然后就能发现,一方面是年轻代指向老年代的引用会迫使将老年代也遍历,另一方面是如果外部引用直接引用老年代对象而我们并不扫描老年代,会出现漏洞。

    于是就能看到,我们回收年轻代的时候,都要面对的问题就是:如何处理老年代。

    后面的逻辑就是,如果我们要遍历老年代,那么代价就太大,所以我们要避免遍历老年代。避免遍历老年代,那就是跨代引用成为GC root。然后前面两个人评论的,为何到老年代要停下来——即所谓的剪枝,也是因为年轻代的回收跑过去遍历老年代是一种开销大而且收益小的行为。

    为什么跨代引用是GC root

    昨日,有人在一个JVM群里问了一个问题,为什么跨代引用是gc root。这虽然是一个很简单的问题,但是其实涉及到了分代垃圾回收算法的核心理念。 gc root的基本解释 首先...

  • 能不能联系一下上下文再来喷?

    为什么跨代引用是GC root

    昨日,有人在一个JVM群里问了一个问题,为什么跨代引用是gc root。这虽然是一个很简单的问题,但是其实涉及到了分代垃圾回收算法的核心理念。 gc root的基本解释 首先...

  • 站点设计

    这个系列是我随便写的,想到一点是一点。构建支付系统的时候可以参考。有些地方设计技术,也只是谈个大概;有些地方完全就是产品形态设计。 站点是一个影响本地化、支付等的综合概念。 ...

  • 120
    要优雅退出吗?dubbogo给你

    dubbogo Apache Dubbo是由阿里开源的一个RPC框架,而dubbogo则是相对应的go语言版本: 之前dubbogo一直没有优雅退出的机制,终于有小伙伴忍不住...

  • 120
    dubbogo中的TPS Limit设计与实现

    前言 Apache Dubbo是由阿里开源的一个RPC框架,除了基本的RPC功能以外,还提供了一整套的服务治理相关功能。目前它已经是Apache基金会下的顶级项目。 而dub...

  • 120
    Hello, Flutter(五)——CheckBox

    前言:《Hello, Flutter》是我近期的一个写作计划。我的目标是写一篇篇简短的教程,提供给Flutter的初级用户,让他们能够快速掌握Flutter开发。代码地址:h...

  • 120
    Hello, Flutter(三)——AppBar

    前言:《Hello, Flutter》是我近期的一个写作计划。我的目标是写一篇篇简短的教程,提供给Flutter的初级用户,让他们能够快速掌握Flutter开发。代码地址:h...

  • 120
    Hello, Flutter(4)——TabBar,实现简单的Tab切换

    前言:《Hello, Flutter》是我近期的一个写作计划。我的目标是写一篇篇简短的教程,提供给Flutter的初级用户,让他们能够快速掌握Flutter开发。代码地址:h...

  • 120
    Hello, Flutter(二)——Scaffold

    前言:《Hello, Flutter》是我近期的一个写作计划。我的目标是写一篇篇简短的教程,提供给Flutter的初级用户,让他们能够快速掌握Flutter开发。代码地址:h...

  • 120
    Hello, Flutter(一)——FloatingActionButton

    前言:《Hello, Flutter》是我近期的一个写作计划。我的目标是写一篇篇简短的教程,提供给Flutter的初级用户,让他们能够快速掌握Flutter开发。代码地址:h...

  • Java字符串“+”你真的明白吗?

    Java对字符串操作做了许多的优化,使用符号“+”来作为字符串拼接操作就是其中之一。 今天来抠一下这个东西的细节。 对于大部分Java开发来说,都知道Java会使用Strin...

  • 120
    徒手撸一个Mock框架(八)—— 调用原始方法

    前面几篇文章,已经解释清楚了如何mock各种类型的方法。然而,这里面存在一个问题,就是这个mock对象,所有的方法都被mock了,不会再执行原来的逻辑。万一我想执行原始的方法...

  • 120
    java面试:你真的知道metaspace??

    一些看过Java8以后的垃圾回收日志的同学一般会对这么一句话感到很困惑: Metaspace used 2425K, capacity 4498K, commit...

  • 如何快速切换JDK版本

    现在很多开发就有那么一个问题,安装了一大堆的Java版本,需要切换的时候就蛋疼了。 我的解决方案是使用alias命令,该命令在Linux和Mac上都是可以的。 在自己的bas...

  • 120
    徒手撸一个Mock框架(六)—— mock final方法

    前面的文章已经大概实现了普通方法的mock了。final方法大概要复杂一点,因为cglib天生不支持拦截final方法。 我们的处理方案也是非常简单:把final方法改成非f...