src/share/vm/memory/tenuredGeneration.hpp

Tue, 24 Feb 2015 15:04:52 -0500

author
dlong
date
Tue, 24 Feb 2015 15:04:52 -0500
changeset 7598
ddce0b7cee93
parent 6198
55fb97c4c58d
child 6876
710a3c8b516e
permissions
-rw-r--r--

8072383: resolve conflicts between open and closed ports
Summary: refactor close to remove references to closed ports
Reviewed-by: kvn, simonis, sgehwolf, dholmes

     1 /*
     2  * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  *
    23  */
    25 #ifndef SHARE_VM_MEMORY_TENUREDGENERATION_HPP
    26 #define SHARE_VM_MEMORY_TENUREDGENERATION_HPP
    28 #include "gc_implementation/shared/cSpaceCounters.hpp"
    29 #include "gc_implementation/shared/gcStats.hpp"
    30 #include "gc_implementation/shared/generationCounters.hpp"
    31 #include "memory/generation.hpp"
    32 #include "utilities/macros.hpp"
    34 // TenuredGeneration models the heap containing old (promoted/tenured) objects.
    36 class ParGCAllocBufferWithBOT;
    38 class TenuredGeneration: public OneContigSpaceCardGeneration {
    39   friend class VMStructs;
    40  protected:
    42 #if INCLUDE_ALL_GCS
    43   // To support parallel promotion: an array of parallel allocation
    44   // buffers, one per thread, initially NULL.
    45   ParGCAllocBufferWithBOT** _alloc_buffers;
    46 #endif // INCLUDE_ALL_GCS
    48   // Retire all alloc buffers before a full GC, so that they will be
    49   // re-allocated at the start of the next young GC.
    50   void retire_alloc_buffers_before_full_gc();
    52   GenerationCounters*   _gen_counters;
    53   CSpaceCounters*       _space_counters;
    55  public:
    56   TenuredGeneration(ReservedSpace rs, size_t initial_byte_size, int level,
    57                     GenRemSet* remset);
    59   Generation::Name kind() { return Generation::MarkSweepCompact; }
    61   // Printing
    62   const char* name() const;
    63   const char* short_name() const { return "Tenured"; }
    64   bool must_be_youngest() const { return false; }
    65   bool must_be_oldest() const { return true; }
    67   // Does a "full" (forced) collection invoked on this generation collect
    68   // all younger generations as well? Note that this is a
    69   // hack to allow the collection of the younger gen first if the flag is
    70   // set. This is better than using th policy's should_collect_gen0_first()
    71   // since that causes us to do an extra unnecessary pair of restart-&-stop-world.
    72   virtual bool full_collects_younger_generations() const {
    73     return !CollectGen0First;
    74   }
    76   virtual void gc_prologue(bool full);
    77   virtual void gc_epilogue(bool full);
    78   bool should_collect(bool   full,
    79                       size_t word_size,
    80                       bool   is_tlab);
    82   virtual void collect(bool full,
    83                        bool clear_all_soft_refs,
    84                        size_t size,
    85                        bool is_tlab);
    86   virtual void compute_new_size();
    88 #if INCLUDE_ALL_GCS
    89   // Overrides.
    90   virtual oop par_promote(int thread_num,
    91                           oop obj, markOop m, size_t word_sz);
    92   virtual void par_promote_alloc_undo(int thread_num,
    93                                       HeapWord* obj, size_t word_sz);
    94   virtual void par_promote_alloc_done(int thread_num);
    95 #endif // INCLUDE_ALL_GCS
    97   // Performance Counter support
    98   void update_counters();
   100   // Statistics
   102   virtual void update_gc_stats(int level, bool full);
   104   virtual bool promotion_attempt_is_safe(size_t max_promoted_in_bytes) const;
   106   void verify_alloc_buffers_clean();
   107 };
   109 #endif // SHARE_VM_MEMORY_TENUREDGENERATION_HPP

mercurial