8136854: G1 ConcurrentG1RefineThread::stop delays JVM shutdown for >150ms

Decrease the default wait delay for mark thread initialization to accomodate very short running applications.

Reviewed-by: tbenson, mgerdin
This commit is contained in:
Thomas Schatzl 2016-02-10 12:08:37 +01:00
parent cb13f4c3fd
commit 0bf8e8d264
3 changed files with 6 additions and 7 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 2016, 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
@ -60,7 +60,7 @@ void ConcurrentGCThread::initialize_in_thread() {
void ConcurrentGCThread::wait_for_universe_init() {
MutexLockerEx x(CGC_lock, Mutex::_no_safepoint_check_flag);
while (!is_init_completed() && !_should_terminate) {
CGC_lock->wait(Mutex::_no_safepoint_check_flag, 200);
CGC_lock->wait(Mutex::_no_safepoint_check_flag, 1);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 2016, 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
@ -32,7 +32,7 @@ class ConcurrentGCThread: public NamedThread {
friend class VMStructs;
protected:
bool _should_terminate;
bool volatile _should_terminate;
bool _has_terminated;
// Create and start the thread (setting it's priority high.)

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2016, 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
@ -181,8 +181,7 @@ void exit_globals() {
}
}
static bool _init_completed = false;
static volatile bool _init_completed = false;
bool is_init_completed() {
return _init_completed;