< 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 >