--- old/test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorObjectTest.java 2018-03-19 14:01:32.913550294 -0700 +++ /dev/null 2018-03-08 15:11:46.002676589 -0800 @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2018, Google 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 MyPackage; - -import java.util.ArrayList; -import java.util.List; - -/** - * @test - * @summary Verifies the JVMTI Heap Monitor API - * @build Frame HeapMonitor - * @compile HeapMonitorObjectTest.java - * @run main/othervm/native -agentlib:HeapMonitor MyPackage.HeapMonitorObjectTest - */ - -public class HeapMonitorObjectTest { - - public static HeapMonitorObjectTest rememberIt; - - private static List allocateObjects() { - int sum = 0; - List frames = new ArrayList(); - allocateObjects(frames); - frames.add(new Frame("allocateObjects", "()Ljava/util/List;", "HeapMonitorObjectTest.java", 44)); - return frames; - } - - private static void allocateObjects(List frames) { - for (int j = 0; j < 1000; j++) { - actuallyAllocateObjects(); - } - frames.add(new Frame("actuallyAllocateObjects", "()V", "HeapMonitorObjectTest.java", 59)); - frames.add(new Frame("allocateObjects", "(Ljava/util/List;)V", "HeapMonitorObjectTest.java", 51)); - } - - private static void actuallyAllocateObjects() { - for (int j = 0; j < 512 * 256; j++) { - rememberIt = new HeapMonitorObjectTest(); - } - } - - public static void main(String[] args) { - if (!HeapMonitor.eventStorageIsEmpty()) { - throw new RuntimeException("Storage is not empty at test start..."); - } - - HeapMonitor.enableSampling(); - List frameList = allocateObjects(); - frameList.add(new Frame("main", "([Ljava/lang/String;)V", "HeapMonitorObjectTest.java", 69)); - - Frame[] frames = frameList.toArray(new Frame[0]); - if (!HeapMonitor.obtainedEvents(frames)) { - throw new RuntimeException("Events not found with the right frames."); - } - - HeapMonitor.disableSampling(); - HeapMonitor.resetEventStorage(); - if (!HeapMonitor.eventStorageIsEmpty()) { - throw new RuntimeException("Storage is not empty after reset."); - } - - HeapMonitor.allocate(); - if (!HeapMonitor.eventStorageIsEmpty()) { - throw new RuntimeException("Storage is not empty after allocation while disabled."); - } - } -}