diff -r 15e026239a6c -r fcdb8e7ead8f test/hotspot/jtreg/gc/cms/TestMBeanCMS.java --- a/test/hotspot/jtreg/gc/cms/TestMBeanCMS.java Fri Nov 08 14:54:17 2019 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package gc.cms; - -/* - * @test TestMBeanCMS.java - * @bug 6581734 - * @requires vm.gc.ConcMarkSweep & !vm.graal.enabled - * @summary CMS Old Gen's collection usage is zero after GC which is incorrect - * @modules java.management - * @run main/othervm -Xmx512m -verbose:gc -XX:+UseConcMarkSweepGC gc.cms.TestMBeanCMS - * - */ - -import java.lang.management.GarbageCollectorMXBean; -import java.lang.management.ManagementFactory; -import java.lang.management.MemoryPoolMXBean; -import java.util.LinkedList; -import java.util.List; - -// 6581734 states that memory pool usage via the mbean is wrong -// for CMS (zero, even after a collection). -// -// 6580448 states that the collection count similarly is wrong -// (stays at zero for CMS collections) -// -- closed as dup of 6581734 as the same fix resolves both. - - -public class TestMBeanCMS { - - private String poolName = "CMS"; - private String collectorName = "ConcurrentMarkSweep"; - - public static void main(String [] args) { - - TestMBeanCMS t = null; - if (args.length==2) { - t = new TestMBeanCMS(args[0], args[1]); - } else { - System.out.println("Defaulting to monitor CMS pool and collector."); - t = new TestMBeanCMS(); - } - t.run(); - } - - public TestMBeanCMS(String pool, String collector) { - poolName = pool; - collectorName = collector; - } - - public TestMBeanCMS() { - } - - public void run() { - // Use some memory, enough that we expect collections should - // have happened. - // Must run with options to ensure no stop the world full GC, - // but e.g. at least one CMS cycle. - allocationWork(300*1024*1024); - System.out.println("Done allocationWork"); - - // Verify some non-zero results are stored. - List pools = ManagementFactory.getMemoryPoolMXBeans(); - int poolsFound = 0; - int poolsWithStats = 0; - for (int i=0; i collectors = ManagementFactory.getGarbageCollectorMXBeans(); - int collectorsFound = 0; - int collectorsWithTime= 0; - for (int i=0; i 0) { - collectorsWithTime++; - } - } - } - // verify: - if (poolsWithStats < poolsFound) { - throw new RuntimeException("pools found with zero stats"); - } - - if (collectorsWithTime list = new LinkedList<>(); - long delay = 50; - long count = 0; - - while (sizeAllocated < target) { - int size = 1024*1024; - byte [] alloc = new byte[size]; - if (count % 2 == 0) { - list.add(alloc); - sizeAllocated+=size; - System.out.print("."); - } - try { Thread.sleep(delay); } catch (InterruptedException ie) { } - count++; - } - } - -}