Pending.java revision 0
0N/A * Copyright 2003-2004 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 * @summary Basic unit test of 0N/A * RuntimeMXBean.getObjectPendingFinalizationCount() 0N/A * 1. GC and runFinalization() to get the current pending number 0N/A * 2. Create some number of objects with reference and without ref. 0N/A * 3. Clear all the references 0N/A * 4. GC and runFinalization() and the finalizable objects should 0N/A * be garbage collected. 0N/A * @author Alexei Guibadoulline and Mandy Chung 0N/A // Turn on verbose:gc to track GC 0N/A // Clean the memory and remove all objects that are pending 0N/A // Let the finalizer to finish 0N/A // Create a number of new objects but no references to them 0N/A // Now check the expected count - GC and runFinalization will be 0N/A // Clean the memory and remove all objects that are pending 0N/A // finalization again 0N/A // Check the mbean now 0N/A // Pause to give a chance to Finalizer thread to run 0N/A // Race condition may occur; attempt to check this 0N/A // a few times before throwing exception. 0N/A for (
int j =
0; j <
5; j++) {
0N/A // poll for another current pending count 0N/A // Pause to give a chance to Finalizer thread to run 0N/A "Unexpected current number of objects pending for " +
0N/A "Unexpected current number of objects pending for " +
0N/A // Enter lock a without blocking 0N/A // may need to tune this timeout for different platforms