--- a/src/hotspot/share/oops/instanceKlass.cpp Tue Feb 06 08:24:36 2018 -0500
+++ b/src/hotspot/share/oops/instanceKlass.cpp Wed Feb 07 03:43:29 2018 +0100
@@ -124,6 +124,8 @@
#endif // ndef DTRACE_ENABLED
+volatile int InstanceKlass::_total_instanceKlass_count = 0;
+
static inline bool is_class_loader(const Symbol* class_name,
const ClassFileParser& parser) {
assert(class_name != NULL, "invariant");
@@ -191,6 +193,8 @@
// Add all classes to our internal class loader list here,
// including classes in the bootstrap (NULL) class loader.
loader_data->add_class(ik, publicize);
+ Atomic::inc(&_total_instanceKlass_count);
+
return ik;
}
@@ -2237,6 +2241,9 @@
// class can't be referenced anymore).
if (_array_name != NULL) _array_name->decrement_refcount();
if (_source_debug_extension != NULL) FREE_C_HEAP_ARRAY(char, _source_debug_extension);
+
+ assert(_total_instanceKlass_count >= 1, "Sanity check");
+ Atomic::dec(&_total_instanceKlass_count);
}
void InstanceKlass::set_source_debug_extension(const char* array, int length) {