108 oop Universe::_the_min_jint_string = NULL; |
108 oop Universe::_the_min_jint_string = NULL; |
109 LatestMethodOopCache* Universe::_finalizer_register_cache = NULL; |
109 LatestMethodOopCache* Universe::_finalizer_register_cache = NULL; |
110 LatestMethodOopCache* Universe::_loader_addClass_cache = NULL; |
110 LatestMethodOopCache* Universe::_loader_addClass_cache = NULL; |
111 ActiveMethodOopsCache* Universe::_reflect_invoke_cache = NULL; |
111 ActiveMethodOopsCache* Universe::_reflect_invoke_cache = NULL; |
112 oop Universe::_out_of_memory_error_java_heap = NULL; |
112 oop Universe::_out_of_memory_error_java_heap = NULL; |
113 oop Universe::_out_of_memory_error_perm_gen = NULL; |
113 oop Universe::_out_of_memory_error_metaspace = NULL; |
|
114 oop Universe::_out_of_memory_error_class_metaspace = NULL; |
114 oop Universe::_out_of_memory_error_array_size = NULL; |
115 oop Universe::_out_of_memory_error_array_size = NULL; |
115 oop Universe::_out_of_memory_error_gc_overhead_limit = NULL; |
116 oop Universe::_out_of_memory_error_gc_overhead_limit = NULL; |
116 objArrayOop Universe::_preallocated_out_of_memory_error_array = NULL; |
117 objArrayOop Universe::_preallocated_out_of_memory_error_array = NULL; |
117 volatile jint Universe::_preallocated_out_of_memory_error_avail_count = 0; |
118 volatile jint Universe::_preallocated_out_of_memory_error_avail_count = 0; |
118 bool Universe::_verify_in_progress = false; |
119 bool Universe::_verify_in_progress = false; |
177 |
178 |
178 f->do_oop((oop*)&_the_empty_class_klass_array); |
179 f->do_oop((oop*)&_the_empty_class_klass_array); |
179 f->do_oop((oop*)&_the_null_string); |
180 f->do_oop((oop*)&_the_null_string); |
180 f->do_oop((oop*)&_the_min_jint_string); |
181 f->do_oop((oop*)&_the_min_jint_string); |
181 f->do_oop((oop*)&_out_of_memory_error_java_heap); |
182 f->do_oop((oop*)&_out_of_memory_error_java_heap); |
182 f->do_oop((oop*)&_out_of_memory_error_perm_gen); |
183 f->do_oop((oop*)&_out_of_memory_error_metaspace); |
|
184 f->do_oop((oop*)&_out_of_memory_error_class_metaspace); |
183 f->do_oop((oop*)&_out_of_memory_error_array_size); |
185 f->do_oop((oop*)&_out_of_memory_error_array_size); |
184 f->do_oop((oop*)&_out_of_memory_error_gc_overhead_limit); |
186 f->do_oop((oop*)&_out_of_memory_error_gc_overhead_limit); |
185 f->do_oop((oop*)&_preallocated_out_of_memory_error_array); |
187 f->do_oop((oop*)&_preallocated_out_of_memory_error_array); |
186 f->do_oop((oop*)&_null_ptr_exception_instance); |
188 f->do_oop((oop*)&_null_ptr_exception_instance); |
187 f->do_oop((oop*)&_arithmetic_exception_instance); |
189 f->do_oop((oop*)&_arithmetic_exception_instance); |
559 // backtrace. These errors are kept alive forever and may be "re-used" when all |
561 // backtrace. These errors are kept alive forever and may be "re-used" when all |
560 // preallocated errors with backtrace have been consumed. Also need to avoid |
562 // preallocated errors with backtrace have been consumed. Also need to avoid |
561 // a potential loop which could happen if an out of memory occurs when attempting |
563 // a potential loop which could happen if an out of memory occurs when attempting |
562 // to allocate the backtrace. |
564 // to allocate the backtrace. |
563 return ((throwable() != Universe::_out_of_memory_error_java_heap) && |
565 return ((throwable() != Universe::_out_of_memory_error_java_heap) && |
564 (throwable() != Universe::_out_of_memory_error_perm_gen) && |
566 (throwable() != Universe::_out_of_memory_error_metaspace) && |
|
567 (throwable() != Universe::_out_of_memory_error_class_metaspace) && |
565 (throwable() != Universe::_out_of_memory_error_array_size) && |
568 (throwable() != Universe::_out_of_memory_error_array_size) && |
566 (throwable() != Universe::_out_of_memory_error_gc_overhead_limit)); |
569 (throwable() != Universe::_out_of_memory_error_gc_overhead_limit)); |
567 } |
570 } |
568 |
571 |
569 |
572 |
1009 |
1012 |
1010 // Setup preallocated OutOfMemoryError errors |
1013 // Setup preallocated OutOfMemoryError errors |
1011 k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_OutOfMemoryError(), true, CHECK_false); |
1014 k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_OutOfMemoryError(), true, CHECK_false); |
1012 k_h = instanceKlassHandle(THREAD, k); |
1015 k_h = instanceKlassHandle(THREAD, k); |
1013 Universe::_out_of_memory_error_java_heap = k_h->allocate_instance(CHECK_false); |
1016 Universe::_out_of_memory_error_java_heap = k_h->allocate_instance(CHECK_false); |
1014 Universe::_out_of_memory_error_perm_gen = k_h->allocate_instance(CHECK_false); |
1017 Universe::_out_of_memory_error_metaspace = k_h->allocate_instance(CHECK_false); |
|
1018 Universe::_out_of_memory_error_class_metaspace = k_h->allocate_instance(CHECK_false); |
1015 Universe::_out_of_memory_error_array_size = k_h->allocate_instance(CHECK_false); |
1019 Universe::_out_of_memory_error_array_size = k_h->allocate_instance(CHECK_false); |
1016 Universe::_out_of_memory_error_gc_overhead_limit = |
1020 Universe::_out_of_memory_error_gc_overhead_limit = |
1017 k_h->allocate_instance(CHECK_false); |
1021 k_h->allocate_instance(CHECK_false); |
1018 |
1022 |
1019 // Setup preallocated NullPointerException |
1023 // Setup preallocated NullPointerException |
1042 // We prefer to not handle this generally, so we always reinitialize these detail messages. |
1046 // We prefer to not handle this generally, so we always reinitialize these detail messages. |
1043 Handle msg = java_lang_String::create_from_str("Java heap space", CHECK_false); |
1047 Handle msg = java_lang_String::create_from_str("Java heap space", CHECK_false); |
1044 java_lang_Throwable::set_message(Universe::_out_of_memory_error_java_heap, msg()); |
1048 java_lang_Throwable::set_message(Universe::_out_of_memory_error_java_heap, msg()); |
1045 |
1049 |
1046 msg = java_lang_String::create_from_str("Metadata space", CHECK_false); |
1050 msg = java_lang_String::create_from_str("Metadata space", CHECK_false); |
1047 java_lang_Throwable::set_message(Universe::_out_of_memory_error_perm_gen, msg()); |
1051 java_lang_Throwable::set_message(Universe::_out_of_memory_error_metaspace, msg()); |
|
1052 msg = java_lang_String::create_from_str("Class Metadata space", CHECK_false); |
|
1053 java_lang_Throwable::set_message(Universe::_out_of_memory_error_class_metaspace, msg()); |
1048 |
1054 |
1049 msg = java_lang_String::create_from_str("Requested array size exceeds VM limit", CHECK_false); |
1055 msg = java_lang_String::create_from_str("Requested array size exceeds VM limit", CHECK_false); |
1050 java_lang_Throwable::set_message(Universe::_out_of_memory_error_array_size, msg()); |
1056 java_lang_Throwable::set_message(Universe::_out_of_memory_error_array_size, msg()); |
1051 |
1057 |
1052 msg = java_lang_String::create_from_str("GC overhead limit exceeded", CHECK_false); |
1058 msg = java_lang_String::create_from_str("GC overhead limit exceeded", CHECK_false); |