• java面试一日一题:垃圾回收器如何组合使用


    问题:请讲下java中垃圾回收器如何组合使用

    分析:该问题主要考察对垃圾回收器的深度理解

    回答要点:

    主要从以下几点去考虑,

    1、垃圾回收器有哪些种类,每种的特点

    2、组合使用怎么理解

    在上篇文章《java面试一日一题:java中的垃圾回收器》中分享了hotspot虚拟机下的垃圾回收器,共有7种,分别是serial、serial old、parNew、parallel Scavenge、parallel old、CMS、G1。除了G1可以管理整个堆外,其他的都是针对特定的内存区域工作,下面看如何组合使用,

    细心的读者会发现以下规律

    • parallel old只能和parallel Scavenge组合;
    • parallel Scavenge不能和CMS组合;

    还存在这样的一个疑问,为什么CMS和serial old之间还有一个连线,它们可都是年老代的垃圾回收器?

    这是因为,在CMS回收阶段种并发清楚阶段,GC线程和用户线程是并发执行的,那么就必须预留一部分用户线程执行的内存,不能等到整个年老代满了才触发CMS,在JDK1.5这个阈值是68%,在JDK1.6中这个阈值是92%,如果预留的内存无法满足用户线程的执行,这时会出现Concurrent mode failure,这时会启动临时预案,即使用serial old进行年老代回收。

    另外,在年老代设置了使用CMS,则默认的年轻代是parNew,为什么不少serial那,因为serial是单线程。

    上面讲了那么多的垃圾回收器的组合,那么要如何使用一款垃圾回收器那

    -XX:+UseSerialGC  使用serial+serial old的组合

    -XX:+UseParNewGC  使用parNew+serial old的组合

    -XX:+UseConcMarkSweepGC  使用parNew+CMS+serial old的组合

    -XX:+UseParallelGC  使用parallel scavenge的组合

    -XX:+UseParallelOldGC  使用parallel scavenge+parallel Old的组合

    -XX:+UseG1GC  使用G1

    推荐阅读

    java面试一日一题:java中垃圾回收算法有哪些

    java面试一日一题:细数java中的垃圾回收器

    java面试一日一题:如何设计一款垃圾回收器

    一个爱写文章的程序员,欢迎关注我的公众号“北漂程序员”。我有故事,你有酒吗
  • 相关阅读:
    (1)MySQL初识
    ESP8266(WIFI模组)_Lua开发:环境搭建
    那些年写过的毕设论文
    单片机的心跳SysTick
    尝试
    菜单管理设计说明
    mybatis的mapper.xml中sql的用法
    powerdesigner
    Cookie
    java自定义注解
  • 原文地址:https://www.cnblogs.com/teach/p/14837431.html
Copyright © 2020-2023  润新知