< prev index next >
src/hotspot/share/classfile/classLoaderData.hpp
Print this page
*** 77,95 ****
--- 77,102 ----
static ClassLoaderData* _unloading;
// CMS support.
static ClassLoaderData* _saved_head;
static ClassLoaderData* _saved_unloading;
static bool _should_purge;
+
+ // Set if there's anything to purge in the deallocate lists or previous versions
+ // during a safepoint after class unloading in a full GC.
+ static bool _should_clean_deallocate_lists;
+ static bool _safepoint_cleanup_needed;
+
// OOM has been seen in metaspace allocation. Used to prevent some
// allocations until class unloading
static bool _metaspace_oom;
static volatile size_t _num_instance_classes;
static volatile size_t _num_array_classes;
static ClassLoaderData* add_to_graph(Handle class_loader, bool anonymous);
static ClassLoaderData* add(Handle class_loader, bool anonymous);
+
public:
static ClassLoaderData* find_or_create(Handle class_loader);
static void purge();
static void clear_claimed_marks();
// oops do
*** 114,124 ****
static void modules_unloading_do(void f(ModuleEntry*));
static void packages_do(void f(PackageEntry*));
static void packages_unloading_do(void f(PackageEntry*));
static void loaded_classes_do(KlassClosure* klass_closure);
static void classes_unloading_do(void f(Klass* const));
! static bool do_unloading(bool clean_previous_versions);
// dictionary do
// Iterate over all klasses in dictionary, but
// just the classes from defining class loaders.
static void dictionary_classes_do(void f(InstanceKlass*));
--- 121,137 ----
static void modules_unloading_do(void f(ModuleEntry*));
static void packages_do(void f(PackageEntry*));
static void packages_unloading_do(void f(PackageEntry*));
static void loaded_classes_do(KlassClosure* klass_closure);
static void classes_unloading_do(void f(Klass* const));
! static bool do_unloading(bool do_cleaning);
!
! // Expose state to avoid logging overhead in safepoint cleanup tasks.
! static inline bool should_clean_metaspaces();
! static void set_should_clean_deallocate_lists() { _should_clean_deallocate_lists = true; }
! static void clean_deallocate_lists(bool purge_previous_versions);
! static void walk_metadata_and_clean_metaspaces();
// dictionary do
// Iterate over all klasses in dictionary, but
// just the classes from defining class loaders.
static void dictionary_classes_do(void f(InstanceKlass*));
*** 296,306 ****
void modules_do(void f(ModuleEntry*));
void packages_do(void f(PackageEntry*));
// Deallocate free list during class unloading.
void free_deallocate_list(); // for the classes that are not unloaded
! void unload_deallocate_list(); // for the classes that are unloaded
// Allocate out of this class loader data
MetaWord* allocate(size_t size);
Dictionary* create_dictionary();
--- 309,319 ----
void modules_do(void f(ModuleEntry*));
void packages_do(void f(PackageEntry*));
// Deallocate free list during class unloading.
void free_deallocate_list(); // for the classes that are not unloaded
! void free_deallocate_list_C_heap_structures(); // for the classes that are unloaded
// Allocate out of this class loader data
MetaWord* allocate(size_t size);
Dictionary* create_dictionary();
< prev index next >