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 24 /* 25 * @test TestTargetSurvivorRatioFlag 26 * @key gc 27 * @summary Verify that option TargetSurvivorRatio affects survivor space occupancy after minor GC. 28 * @requires (vm.opt.ExplicitGCInvokesConcurrent == null) | (vm.opt.ExplicitGCInvokesConcurrent == false) 29 * @requires (vm.opt.UseJVMCICompiler == null) | (vm.opt.UseJVMCICompiler == false) 30 * @library /testlibrary /test/lib 31 * @modules java.base/jdk.internal.misc 32 * java.management 33 * @build TestTargetSurvivorRatioFlag 34 * @run main ClassFileInstaller sun.hotspot.WhiteBox 35 * @run driver TestTargetSurvivorRatioFlag 36 */ 37 38 import jdk.test.lib.AllocationHelper; 39 import java.lang.management.GarbageCollectorMXBean; 40 import java.util.Arrays; 41 import java.util.Collections; 42 import java.util.LinkedList; 43 import java.util.List; 44 import java.util.regex.Matcher; 45 import java.util.regex.Pattern; 46 import jdk.test.lib.HeapRegionUsageTool; 47 import jdk.internal.misc.Unsafe; 48 import jdk.test.lib.OutputAnalyzer; 49 import jdk.test.lib.ProcessTools; 50 import jdk.test.lib.Utils; 51 import sun.hotspot.WhiteBox; 52 53 /* In order to test that TargetSurvivorRatio affects survivor space occupancy 54 * we setup fixed MaxTenuringThreshold and then verifying that if size of allocated 55 * objects is lower than (survivor_size * TargetSurvivorRatio / 100) then objects 56 * will stay in survivor space until MaxTenuringThreshold minor GC cycles. 57 * If more than (survivor_size * TargetSurvivorRatio / 100) objects were allocated, 58 * then we verify that after MaxTenuringThreshold minor GC cycles survivor space 59 * is almost empty. 60 */ 61 public class TestTargetSurvivorRatioFlag { 62 63 public static final long M = 1024 * 1024; 64 65 // VM option values 66 public static final long MAX_NEW_SIZE = 40 * M; 67 public static final int SURVIVOR_RATIO = 8; 68 public static final int MAX_TENURING_THRESHOLD = 15; 69 | 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 24 /* 25 * @test TestTargetSurvivorRatioFlag 26 * @key gc 27 * @summary Verify that option TargetSurvivorRatio affects survivor space occupancy after minor GC. 28 * @requires (vm.opt.ExplicitGCInvokesConcurrent == null) | (vm.opt.ExplicitGCInvokesConcurrent == false) 29 * @requires (vm.opt.UseJVMCICompiler == null) | (vm.opt.UseJVMCICompiler == false) 30 * @library /test/lib 31 * @modules java.base/jdk.internal.misc 32 * java.management 33 * @build sun.hotspot.WhiteBox 34 * @run main ClassFileInstaller sun.hotspot.WhiteBox 35 * @run driver TestTargetSurvivorRatioFlag 36 */ 37 38 import java.lang.management.GarbageCollectorMXBean; 39 import java.util.Arrays; 40 import java.util.Collections; 41 import java.util.LinkedList; 42 import java.util.List; 43 import java.util.regex.Matcher; 44 import java.util.regex.Pattern; 45 import jdk.internal.misc.Unsafe; 46 import jdk.test.lib.process.OutputAnalyzer; 47 import jdk.test.lib.process.ProcessTools; 48 import jdk.test.lib.Utils; 49 import sun.hotspot.WhiteBox; 50 51 /* In order to test that TargetSurvivorRatio affects survivor space occupancy 52 * we setup fixed MaxTenuringThreshold and then verifying that if size of allocated 53 * objects is lower than (survivor_size * TargetSurvivorRatio / 100) then objects 54 * will stay in survivor space until MaxTenuringThreshold minor GC cycles. 55 * If more than (survivor_size * TargetSurvivorRatio / 100) objects were allocated, 56 * then we verify that after MaxTenuringThreshold minor GC cycles survivor space 57 * is almost empty. 58 */ 59 public class TestTargetSurvivorRatioFlag { 60 61 public static final long M = 1024 * 1024; 62 63 // VM option values 64 public static final long MAX_NEW_SIZE = 40 * M; 65 public static final int SURVIVOR_RATIO = 8; 66 public static final int MAX_TENURING_THRESHOLD = 15; 67 |