hotspot/src/share/vm/memory/collectorPolicy.cpp
changeset 15497 cba24d845969
parent 15482 470d0b0c09f1
parent 15494 b3a322a0bea5
child 15748 66d805061d7a
equal deleted inserted replaced
15485:beb9d55124da 15497:cba24d845969
     1 /*
     1 /*
     2  * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
     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.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     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
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   233   GenCollectorPolicy::initialize_flags();
   233   GenCollectorPolicy::initialize_flags();
   234 
   234 
   235   OldSize = align_size_down(OldSize, min_alignment());
   235   OldSize = align_size_down(OldSize, min_alignment());
   236   if (NewSize + OldSize > MaxHeapSize) {
   236   if (NewSize + OldSize > MaxHeapSize) {
   237     MaxHeapSize = NewSize + OldSize;
   237     MaxHeapSize = NewSize + OldSize;
       
   238   }
       
   239 
       
   240   if (FLAG_IS_CMDLINE(OldSize) && FLAG_IS_DEFAULT(NewSize)) {
       
   241     // NewRatio will be used later to set the young generation size so we use
       
   242     // it to calculate how big the heap should be based on the requested OldSize
       
   243     // and NewRatio.
       
   244     assert(NewRatio > 0, "NewRatio should have been set up earlier");
       
   245     size_t calculated_heapsize = (OldSize / NewRatio) * (NewRatio + 1);
       
   246 
       
   247     calculated_heapsize = align_size_up(calculated_heapsize, max_alignment());
       
   248     MaxHeapSize = calculated_heapsize;
       
   249     InitialHeapSize = calculated_heapsize;
   238   }
   250   }
   239   MaxHeapSize = align_size_up(MaxHeapSize, max_alignment());
   251   MaxHeapSize = align_size_up(MaxHeapSize, max_alignment());
   240 
   252 
   241   always_do_update_barrier = UseConcMarkSweepGC;
   253   always_do_update_barrier = UseConcMarkSweepGC;
   242 
   254 
   383 // is used to make the needed adjustments.  The application of the
   395 // is used to make the needed adjustments.  The application of the
   384 // policies could be more sophisticated (iterative for example) but
   396 // policies could be more sophisticated (iterative for example) but
   385 // keeping it simple also seems a worthwhile goal.
   397 // keeping it simple also seems a worthwhile goal.
   386 bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr,
   398 bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr,
   387                                                      size_t* gen1_size_ptr,
   399                                                      size_t* gen1_size_ptr,
   388                                                      size_t heap_size,
   400                                                      const size_t heap_size,
   389                                                      size_t min_gen0_size) {
   401                                                      const size_t min_gen1_size) {
   390   bool result = false;
   402   bool result = false;
       
   403 
   391   if ((*gen1_size_ptr + *gen0_size_ptr) > heap_size) {
   404   if ((*gen1_size_ptr + *gen0_size_ptr) > heap_size) {
   392     if (((*gen0_size_ptr + OldSize) > heap_size) &&
   405     if ((heap_size < (*gen0_size_ptr + min_gen1_size)) &&
   393        (heap_size - min_gen0_size) >= min_alignment()) {
   406         (heap_size >= min_gen1_size + min_alignment())) {
   394       // Adjust gen0 down to accomodate OldSize
   407       // Adjust gen0 down to accommodate min_gen1_size
   395       *gen0_size_ptr = heap_size - min_gen0_size;
   408       *gen0_size_ptr = heap_size - min_gen1_size;
   396       *gen0_size_ptr =
   409       *gen0_size_ptr =
   397         MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
   410         MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
   398              min_alignment());
   411              min_alignment());
   399       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
   412       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
   400       result = true;
   413       result = true;