|
Java example source code file (TestHumongousCodeCacheRoots.java)
The TestHumongousCodeCacheRoots.java Java example source code/* * Copyright (c) 2013, 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. */ /* * @test * @key regression * @key gc * @bug 8027756 * @library /testlibrary /testlibrary/whitebox * @build TestHumongousCodeCacheRoots * @run main ClassFileInstaller sun.hotspot.WhiteBox * @summary Humongous objects may have references from the code cache * @run main TestHumongousCodeCacheRoots */ import com.oracle.java.testlibrary.*; import sun.hotspot.WhiteBox; import java.util.ArrayList; import java.util.Arrays; class TestHumongousCodeCacheRootsHelper { static final int n = 1000000; static final int[] AA = new int[n]; static final int[] BB = new int[n]; public static void main(String args[]) throws Exception { // do some work so that the compiler compiles this method, inlining the // reference to the integer array (which is a humonguous object) into // the code cache. for(int i = 0; i < n; i++) { AA[i] = 0; BB[i] = 0; } // trigger a GC that checks that the verification code allows humongous // objects with code cache roots; objects should be all live here. System.gc(); // deoptimize everyhing: this should make all compiled code zombies. WhiteBox wb = WhiteBox.getWhiteBox(); wb.deoptimizeAll(); // trigger a GC that checks that the verification code allows humongous // objects with code cache roots; objects should be all live here. System.gc(); // wait a little for the code cache sweeper to try to clean up zombie nmethods // and unregister the code roots. try { Thread.sleep(5000); } catch (InterruptedException ex) { } // do some work on the arrays to make sure that they need to be live after the GCs for(int i = 0; i < n; i++) { AA[i] = 1; BB[i] = 10; } System.out.println(); } } public class TestHumongousCodeCacheRoots { /** * Executes a class in a new VM process with the given parameters. * @param vmargs Arguments to the VM to run * @param classname Name of the class to run * @param arguments Arguments to the class * @param useTestDotJavaDotOpts Use test.java.opts as part of the VM argument string * @return The OutputAnalyzer with the results for the invocation. */ public static OutputAnalyzer runWhiteBoxTest(String[] vmargs, String classname, String[] arguments, boolean useTestDotJavaDotOpts) throws Exception { ArrayList<String> finalargs = new ArrayList Other Java examples (source code examples)Here is a short list of links related to this Java TestHumongousCodeCacheRoots.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.