87
88 // OOM has been seen in metaspace allocation. Used to prevent some
89 // allocations until class unloading
90 static bool _metaspace_oom;
91
92 static volatile size_t _num_instance_classes;
93 static volatile size_t _num_array_classes;
94
95 static ClassLoaderData* add_to_graph(Handle class_loader, bool is_unsafe_anonymous);
96 static ClassLoaderData* add(Handle class_loader, bool is_unsafe_anonymous);
97
98 public:
99 static ClassLoaderData* find_or_create(Handle class_loader);
100 static void clean_module_and_package_info();
101 static void purge();
102 static void clear_claimed_marks();
103 // Iteration through CLDG inside a safepoint; GC support
104 static void cld_do(CLDClosure* cl);
105 static void cld_unloading_do(CLDClosure* cl);
106 static void roots_cld_do(CLDClosure* strong, CLDClosure* weak);
107 static void keep_alive_cld_do(CLDClosure* cl);
108 static void always_strong_cld_do(CLDClosure* cl);
109 // klass do
110 // Walking classes through the ClassLoaderDataGraph include array classes. It also includes
111 // classes that are allocated but not loaded, classes that have errors, and scratch classes
112 // for redefinition. These classes are removed during the next class unloading.
113 // Walking the ClassLoaderDataGraph also includes unsafe anonymous classes.
114 static void classes_do(KlassClosure* klass_closure);
115 static void classes_do(void f(Klass* const));
116 static void methods_do(void f(Method*));
117 static void modules_do(void f(ModuleEntry*));
118 static void modules_unloading_do(void f(ModuleEntry*));
119 static void packages_do(void f(PackageEntry*));
120 static void packages_unloading_do(void f(PackageEntry*));
121 static void loaded_classes_do(KlassClosure* klass_closure);
122 static void classes_unloading_do(void f(Klass* const));
123 static bool do_unloading(bool do_cleaning);
124
125 // Expose state to avoid logging overhead in safepoint cleanup tasks.
126 static inline bool should_clean_metaspaces_and_reset();
127 static void set_should_clean_deallocate_lists() { _should_clean_deallocate_lists = true; }
|
87
88 // OOM has been seen in metaspace allocation. Used to prevent some
89 // allocations until class unloading
90 static bool _metaspace_oom;
91
92 static volatile size_t _num_instance_classes;
93 static volatile size_t _num_array_classes;
94
95 static ClassLoaderData* add_to_graph(Handle class_loader, bool is_unsafe_anonymous);
96 static ClassLoaderData* add(Handle class_loader, bool is_unsafe_anonymous);
97
98 public:
99 static ClassLoaderData* find_or_create(Handle class_loader);
100 static void clean_module_and_package_info();
101 static void purge();
102 static void clear_claimed_marks();
103 // Iteration through CLDG inside a safepoint; GC support
104 static void cld_do(CLDClosure* cl);
105 static void cld_unloading_do(CLDClosure* cl);
106 static void roots_cld_do(CLDClosure* strong, CLDClosure* weak);
107 static void always_strong_cld_do(CLDClosure* cl);
108 // klass do
109 // Walking classes through the ClassLoaderDataGraph include array classes. It also includes
110 // classes that are allocated but not loaded, classes that have errors, and scratch classes
111 // for redefinition. These classes are removed during the next class unloading.
112 // Walking the ClassLoaderDataGraph also includes unsafe anonymous classes.
113 static void classes_do(KlassClosure* klass_closure);
114 static void classes_do(void f(Klass* const));
115 static void methods_do(void f(Method*));
116 static void modules_do(void f(ModuleEntry*));
117 static void modules_unloading_do(void f(ModuleEntry*));
118 static void packages_do(void f(PackageEntry*));
119 static void packages_unloading_do(void f(PackageEntry*));
120 static void loaded_classes_do(KlassClosure* klass_closure);
121 static void classes_unloading_do(void f(Klass* const));
122 static bool do_unloading(bool do_cleaning);
123
124 // Expose state to avoid logging overhead in safepoint cleanup tasks.
125 static inline bool should_clean_metaspaces_and_reset();
126 static void set_should_clean_deallocate_lists() { _should_clean_deallocate_lists = true; }
|