240 发简信
IP属地:浙江
  • @占小狼 希望能答疑下。

    图解CMS垃圾回收机制,你值得拥有

    简书 占小狼[https://www.jianshu.com/users/90ab66c248e6/latest_articles],转载请注明原创出处,谢谢! 最近在整理J...

  • 我认为是这样的:Final Marking会stop the word,因此在该阶段要尽可能减少时间。在并发标记阶段,由于用户线程也在并发运行,因此有可能出现漏标记的问题,所有必须在Final Marking中进行检查。前面说了Final Marking的时间要尽量少,而打标记的时间是要耗时的。因此在这里从GC Roots出发,根据并发标记阶段的结果,只需要对那些变化的部分打标记,而对没变化的只是进行检查。因此打标记的时间会大大减少(相比没有并发标记阶段,所有活都留给Final Marking)

    图解CMS垃圾回收机制,你值得拥有

    简书 占小狼[https://www.jianshu.com/users/90ab66c248e6/latest_articles],转载请注明原创出处,谢谢! 最近在整理J...

  • @占小狼

    图解CMS垃圾回收机制,你值得拥有

    简书 占小狼[https://www.jianshu.com/users/90ab66c248e6/latest_articles],转载请注明原创出处,谢谢! 最近在整理J...

  • 在最后“是否要对老年代的空间进行Compact”这里的三种情况有一个疑问:当主动old gc时,其实cms是采用了Serial Old进行清理,那Serial Old不是标记整理算法会进行压缩吗?那这里还能设置UseCMSCompactAtFullCollection和 CMSFullGCsBeforeCompaction,那这个意思是不是说当cms主动old gc时,它的gc算法不是严格意义上的Serial Old?

    图解CMS垃圾回收机制,你值得拥有

    简书 占小狼[https://www.jianshu.com/users/90ab66c248e6/latest_articles],转载请注明原创出处,谢谢! 最近在整理J...

  • 上文中说,“新生代的晋升担保失败”是周期性old gc的触发条件。又说“YGC过程发生Promotion Failed,进而对老年代进行回收”也是主动Old GC的触发条件。这里不对吧,如果发生担保失败,肯定会产生full gc,这里的主动Old GC指的应该就是full gc吧。那担保失败应该不是周期性old gc的触发条件才对

    图解CMS垃圾回收机制,你值得拥有

    简书 占小狼[https://www.jianshu.com/users/90ab66c248e6/latest_articles],转载请注明原创出处,谢谢! 最近在整理J...

  • 如果一次回收中,Survivor 0+Eden中存活下来的内存超过了Survivor 1,将发生什么事情?

    杂谈GC

    简书 占小狼转载请注明原创出处,谢谢 上周有幸给部门的小伙伴分享了一些JVM相关的知识,在整个做PPT的过程中,也是对一个领域的碎片知识的整理,本文将针对虚拟机GC相关的一些...

  • 恩,这里说因为FGC才能触发堆外内存的回收并不严谨?? 因为一般堆外内存一般用于生命周期较长的对象,这导致DirectByteBuffer在几次YGC后会被放入到老年代,从而来说,一般是需要通过FGC来触发堆外内存的回收。 👈个人理解,是这样吗?

  • 深入理解SPI机制

    一、什么是SPI SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/servic...

  • 120
    Java高并发(六) - 锁的优化及 JVM 对锁优化所做的努力

    Java高并发(一)- 并发编程的几个基本概念Java高并发(二) - Java 内存模型与线程Java高并发(三) - CountDownLatch、CyclicBarri...

  • lock 前缀的指令在多核处理器下读写会引发两件事情。一是将当前处理器缓存行的数据写回到系统内存。二是写回内存的操作会使在其他 CPU 里缓存了该内存地址的额数据无效。为了提高处理速度,处理器不直接和内存进行通信,而是先将系统内存的数据读到内部缓存后再进行操作,但操作完不知道何时会写到内存。如果对声明了 volatile 的变量进行写操作,JVM 就会向处理器发送一条 lock 前缀的指令,将这个变量所在缓存行的数据写回到系统内存。为了保证各个处理器的缓存是一致的,实现了缓存一致性协议(MESI),每个处理器通过嗅探机制在总线上传播的数据来检查自己缓存的值是不是过期了,当处理器发现自己缓存行对应的内存地址被修改,就会将当前处理器的缓存行设置成无效状态,当处理器对这个数据进行修改操作的时候,会重新从系统内存中把数据读到处理器缓存里。在多核处理器下还会完成:当处理器发现本地缓存失效后,就会从内存中重读该变量数据,即可以获取当前最新值。

    面试必问的volatile,你了解多少?

    前言 Java中volatile这个热门的关键字,在面试中经常会被提及,在各种技术交流群中也经常被讨论,但似乎讨论不出一个完美的结果,带着种种疑惑,准备从JVM、C++、汇编...