RFR: 8278125: Some preallocated OOMEs are missing stack trace [v3]

Coleen Phillimore coleenp at openjdk.java.net
Mon Dec 20 23:19:51 UTC 2021


On Mon, 20 Dec 2021 22:50:54 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> src/hotspot/share/memory/universe.cpp line 688:
>> 
>>> 686:   java_lang_Throwable::set_message(oom_array->obj_at(_oom_metaspace), msg());
>>> 687: 
>>> 688:   msg = java_lang_String::create_from_str(MSG_CLASS_METASPACE, CHECK);
>> 
>> I meant intern these two strings here and check for equality?  Save the interned string in a static OopHandle in the Universe class.
>
> Sorry Coleen I do not understand what you mean by this. How do you compare the "interned" oop String with the incoming `char*` text?

OopHandle Universe::_metaspace_string;
...
msg = String::intern("Metaspace", CHECK);
java_lang_Throwable::set_message(oom_array->obj_at(_oom_metaspace, msg());
Universe::_metaspace_string = OopHandle(vm_global(), msg);
...
bool Universe::is_metaspace_oome(oop exc) {
  return java_lang_Throwable::get_message(exc) == _metaspace_string.resolve();
}

-------------

PR: https://git.openjdk.java.net/jdk/pull/6672


More information about the hotspot-runtime-dev mailing list