asPSOldGen.cpp revision 0
0N/A * Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 0N/A * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 0N/A * CA 95054 USA or visit www.sun.com if you need additional information or 0N/A * have any questions. 0N/A#
include "incls/_precompiled.incl" 0N/A// Whereas PSOldGen takes the maximum size of the generation 0N/A// (which doesn't change in the case of PSOldGen) as a parameter, 0N/A// ASPSOldGen takes the upper limit on the size of 0N/A// the generation as a parameter. In ASPSOldGen the 0N/A// maximum size of the generation can change as the boundary 0N/A// moves. The "maximum size of the generation" is still a valid 0N/A// concept since the generation can grow and shrink within that 0N/A// maximum. There are lots of useful checks that use that 0N/A// maximum. In PSOldGen the method max_gen_size() returns 0N/A// _max_gen_size (as set by the PSOldGen constructor). This 0N/A// is how it always worked. In ASPSOldGen max_gen_size() 0N/A// returned the size of the reserved space for the generation. 0N/A// That can change as the boundary moves. Below the limit of 0N/A// the size of the generation is passed to the PSOldGen constructor 0N/A// for "_max_gen_size" (have to pass something) but it is not used later. 0N/A // If the used or minimum gen size (aligned up) is greater 0N/A // than the total reserved size, then the space available 0N/A // for contraction should (after proper alignment) be 0 0N/A // Use the "increment" fraction instead of the "decrement" fraction 0N/A // to allow the other gen to expand more aggressively. The 0N/A // "decrement" fraction is conservative because its intent is to 0N/A // only reduce the footprint. 0N/A // Also adjust for inter-generational alignment