提交 9d2ac71c 编写于 作者: J jmasa

8014851: UseAdaptiveGCBoundary is broken

Reviewed-by: tschatzl, brutisso
上级 02768f4f
......@@ -70,6 +70,17 @@ ASPSOldGen::ASPSOldGen(PSVirtualSpace* vs,
_virtual_space = vs;
}
void ASPSOldGen::initialize_work(const char* perf_data_name, int level) {
PSOldGen::initialize_work(perf_data_name, level);
// The old gen can grow to gen_size_limit(). _reserve reflects only
// the current maximum that can be committed.
assert(_reserved.byte_size() <= gen_size_limit(), "Consistency check");
initialize_performance_counters(perf_data_name, level);
}
void ASPSOldGen::reset_after_change() {
_reserved = MemRegion((HeapWord*)virtual_space()->low_boundary(),
(HeapWord*)virtual_space()->high_boundary());
......
......@@ -50,6 +50,8 @@ class ASPSOldGen : public PSOldGen {
size_t max_gen_size() { return _reserved.byte_size(); }
void set_gen_size_limit(size_t v) { _gen_size_limit = v; }
virtual void initialize_work(const char* perf_data_name, int level);
// After a shrink or expand reset the generation
void reset_after_change();
......
......@@ -110,7 +110,7 @@ class PSOldGen : public CHeapObj<mtGC> {
virtual void initialize(ReservedSpace rs, size_t alignment,
const char* perf_data_name, int level);
void initialize_virtual_space(ReservedSpace rs, size_t alignment);
void initialize_work(const char* perf_data_name, int level);
virtual void initialize_work(const char* perf_data_name, int level);
virtual void initialize_performance_counters(const char* perf_data_name, int level);
MemRegion reserved() const { return _reserved; }
......
/*
* 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 AdaptiveGCBoundary
* @summary UseAdaptiveGCBoundary is broken
* @bug 8014546
* @key gc
* @key regression
* @library /testlibrary
* @run main/othervm AdaptiveGCBoundary
* @author jon.masamitsu@oracle.com
*/
import com.oracle.java.testlibrary.*;
public class AdaptiveGCBoundary {
public static void main(String args[]) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
"-showversion",
"-XX:+UseParallelGC",
"-XX:+UseAdaptiveGCBoundary",
"-XX:+PrintCommandLineFlags",
SystemGCCaller.class.getName()
);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldContain("+UseAdaptiveGCBoundary");
output.shouldNotContain("error");
output.shouldHaveExitValue(0);
}
static class SystemGCCaller {
public static void main(String [] args) {
System.gc();
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册