伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

一个 System.gc 就能让你在面试中被打击到怀疑人生

来源:本站原创 浏览:85次 时间:2022-06-05

第一时间获取技术干货和业界资讯!

一个 System.gc 就能让你在面试中被打击到怀疑人生
人的一生中可能会遭遇到无数次打击。而今天我就给大家介绍一个你可能忽略的知识点:System.gc,给你专门来一次降维打击。降低到某个细微的知识点,让你被打击的体无完肤。


面试题一:在 Java 中,如何手动的让 GC 进行垃圾回收?

这个方法其实有很多种。常见骚操作有 System.gc(),通过 jmap 来触发,或者通过 jvmti 做强制 GC 等。

面试题二:System.gc 是 Full Gc 吗?

System.gc 其实是做一次 full gc。这一点可以根据 DisableExplicitGC 的注释说明来看。Tells whether calling System.gc() does a full GC。

面试题三:System.gc 的危害是什么?

因为 System.gc 是一个 Full gc,所以会暂停整个进程。如果进程经常被频繁暂停,就要注意超时、并发等问题。

面试题四:如何避免 System.gc ?

通过 -XX:+DisableExplicitGC 禁掉 System.gc。

面试题五:System.gc 的 Full Gc 如何做到暂停整个进程?

Java 里面的 GC 有一个重要的线程 VMThread。在 jvm 里,这个线程会不断轮询它的队列,这个队列里主要是存一些 VM_operation 的动作,比如最常见的就是内存分配失败要求做 GC 操作的请求等,在对 gc 这些操作执行的时候会先将其他业务线程都进入到安全点,也就是这些线程从此不再执行任何字节码指令,只有当出了安全点的时候才让他们继续执行原来的指令,因此这其实就是我们说的 stop the world(STW),整个进程相当于静止了。

面试题六:并行的 Full GC 是否有了解?

并行 Full GC 也同样会做 YGC 和 CMS GC,但是效率高就搞在 CMS GC 是走的 background 的,整个暂停的过程主要是 YGC、CMS_initMark、CMS_remark 几个阶段。background 顾名思义是在后台做的,也就是可以不影响正常的业务线程跑,触发条件比如说 old 的内存占比超过多少的时候就可能触发一次 background 式的 cms gc,这个过程会经历 CMS GC 的所有阶段,该暂停的暂停,该并行的并行,效率相对来说还比较高,毕竟有和业务线程并行的 gc 阶段;而 foreground 则不然,它发生的场景比如业务线程请求分配内存,但是内存不够了,于是可能触发一次 cms gc,这个过程就必须是要等内存分配到了线程才能继续往下面走的,因此整个过程必须是STW的,因此 CMS GC 整个过程都是暂停应用的,但是为了提高效率,它并不是每个阶段都会走的,只走其中一些阶段,这些省下来的阶段主要是并行阶段。

以上几个关于 System.gc 的问题,你是否被雷到了。其实 Java 的 Gc 还是很复杂的,我只是降低维度到了 System.gc 这个具体的方法,后面有时间了,我们在继续分享。

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net