8227032: MetaspaceUtils::print_report crashes when called before initialization
Reviewed-by: tschatzl, goetz
This commit is contained in:
parent
9e02985246
commit
ba3ba19536
@ -584,6 +584,11 @@ static void print_basic_switches(outputStream* out, size_t scale) {
|
||||
// unlike print_report() is guaranteed not to lock or to walk the CLDG.
|
||||
void MetaspaceUtils::print_basic_report(outputStream* out, size_t scale) {
|
||||
|
||||
if (!Metaspace::initialized()) {
|
||||
out->print_cr("Metaspace not yet initialized.");
|
||||
return;
|
||||
}
|
||||
|
||||
out->cr();
|
||||
out->print_cr("Usage:");
|
||||
|
||||
@ -672,6 +677,11 @@ void MetaspaceUtils::print_basic_report(outputStream* out, size_t scale) {
|
||||
|
||||
void MetaspaceUtils::print_report(outputStream* out, size_t scale, int flags) {
|
||||
|
||||
if (!Metaspace::initialized()) {
|
||||
out->print_cr("Metaspace not yet initialized.");
|
||||
return;
|
||||
}
|
||||
|
||||
const bool print_loaders = (flags & rf_show_loaders) > 0;
|
||||
const bool print_classes = (flags & rf_show_classes) > 0;
|
||||
const bool print_by_chunktype = (flags & rf_break_down_by_chunktype) > 0;
|
||||
@ -959,6 +969,8 @@ VirtualSpaceList* Metaspace::_class_space_list = NULL;
|
||||
ChunkManager* Metaspace::_chunk_manager_metadata = NULL;
|
||||
ChunkManager* Metaspace::_chunk_manager_class = NULL;
|
||||
|
||||
bool Metaspace::_initialized = false;
|
||||
|
||||
#define VIRTUALSPACEMULTIPLIER 2
|
||||
|
||||
#ifdef _LP64
|
||||
@ -1285,6 +1297,9 @@ void Metaspace::global_initialize() {
|
||||
}
|
||||
|
||||
_tracer = new MetaspaceTracer();
|
||||
|
||||
_initialized = true;
|
||||
|
||||
}
|
||||
|
||||
void Metaspace::post_initialize() {
|
||||
|
@ -140,6 +140,8 @@ class Metaspace : public AllStatic {
|
||||
|
||||
static const MetaspaceTracer* _tracer;
|
||||
|
||||
static bool _initialized;
|
||||
|
||||
public:
|
||||
static metaspace::VirtualSpaceList* space_list() { return _space_list; }
|
||||
static metaspace::VirtualSpaceList* class_space_list() { return _class_space_list; }
|
||||
@ -225,6 +227,8 @@ class Metaspace : public AllStatic {
|
||||
return mdType == ClassType && using_class_space();
|
||||
}
|
||||
|
||||
static bool initialized() { return _initialized; }
|
||||
|
||||
};
|
||||
|
||||
// Manages the metaspace portion belonging to a class loader
|
||||
|
Loading…
x
Reference in New Issue
Block a user