zoukankan      html  css  js  c++  java
  • JVM默认老年代回收是 PSMarkSweep(Serial-Old) 还是Parallel Old?

    这个问题的答案取决于JDK版本,在2012年默认值改变过一次。

    请参考:JDK-6679764: enable parallel compaction by default
    这个改进使得HotSpot VM在选择使用ParallelGC(-XX:+UseParallelGC 或者是ergonomics自动选择)的时候,会默认开启 -XX:+UseParallelOldGC 。这个变更应该是在JDK7u4开始的JDK7u系列与JDK8系列开始生效。

    对应的patch是:
    jdk8u/jdk8u/hotspot: 24cae3e4cbaa
    --- a/src/share/vm/runtime/arguments.cpp	Mon Jan 30 15:21:57 2012 +0100
    +++ b/src/share/vm/runtime/arguments.cpp	Thu Feb 02 16:05:17 2012 -0800
    @@ -1400,10 +1400,11 @@
     
     void Arguments::set_parallel_gc_flags() {
       assert(UseParallelGC || UseParallelOldGC, "Error");
    -  // If parallel old was requested, automatically enable parallel scavenge.
    -  if (UseParallelOldGC && !UseParallelGC && FLAG_IS_DEFAULT(UseParallelGC)) {
    -    FLAG_SET_DEFAULT(UseParallelGC, true);
    +  // Enable ParallelOld unless it was explicitly disabled (cmd line or rc file).
    +  if (FLAG_IS_DEFAULT(UseParallelOldGC)) {
    +    FLAG_SET_DEFAULT(UseParallelOldGC, true);
       }
    +  FLAG_SET_DEFAULT(UseParallelGC, true);
     
       // If no heap maximum was requested explicitly, use some reasonable fraction
       // of the physical memory, up to a maximum of 1GB.
    

    在这个改变之前,即便选择了ParallelGC,默认情况下ParallelOldGC并不会随即开启,而是要自己通过 -XX:+UseParallelOldGC 去选定。

    在GC日志里,如果看到Full GC里有"ParOldGen"就是选择了ParallelOldGC。
    [Full GC [PSYoungGen: 480K->0K(3584K)] [ParOldGen: 4660K->4909K(12288K)] 5141K->4909K(15872K) [PSPermGen: 11202K->11198K(22528K)], 0.0515530 secs] [Times: user=0.08 sys=0.00, real=0.05 secs]
    
     
    链接:https://www.zhihu.com/question/56344485/answer/149543993
     
  • 相关阅读:
    Linux之20——sudo命令
    Linux之18——Linux下安装MySQL及远程连接MySQL
    Linux之17——Git安装及使用以及连接GitHub方法详解
    Linux之16——free性能调优命令
    Linux之15——nc命令详解
    Linux之14——curl命令详解
    Linux之13——常用统计命令之wc
    15 Python 迭代器和生成器
    16 Python 递归函数
    17 python 内置函数
  • 原文地址:https://www.cnblogs.com/tiancai/p/12633543.html
Copyright © 2011-2022 走看看