src/share/vm/memory/metaspaceTracer.cpp

Print this page
rev 12364 : 8170672: Event-based tracing to support classloader instances
Reviewed-by:


  45                                                           size_t word_size,
  46                                                           MetaspaceObj::Type objtype,
  47                                                           Metaspace::MetadataType mdtype) const {
  48   send_allocation_failure_event<EventMetaspaceAllocationFailure>(cld, word_size, objtype, mdtype);
  49 }
  50 
  51 void MetaspaceTracer::report_metadata_oom(ClassLoaderData *cld,
  52                                          size_t word_size,
  53                                          MetaspaceObj::Type objtype,
  54                                          Metaspace::MetadataType mdtype) const {
  55   send_allocation_failure_event<EventMetaspaceOOM>(cld, word_size, objtype, mdtype);
  56 }
  57 
  58 template <typename E>
  59 void MetaspaceTracer::send_allocation_failure_event(ClassLoaderData *cld,
  60                                                     size_t word_size,
  61                                                     MetaspaceObj::Type objtype,
  62                                                     Metaspace::MetadataType mdtype) const {
  63   E event;
  64   if (event.should_commit()) {

  65     if (cld->is_anonymous()) {
  66       event.set_classLoader(NULL);
  67       event.set_anonymousClassLoader(true);
  68     } else {
  69       if (cld->is_the_null_class_loader_data()) {
  70         event.set_classLoader((Klass*) NULL);
  71       } else {
  72         event.set_classLoader(cld->class_loader()->klass());
  73       }
  74       event.set_anonymousClassLoader(false);
  75     }
  76 
  77     event.set_size(word_size * BytesPerWord);
  78     event.set_metadataType((u1) mdtype);
  79     event.set_metaspaceObjectType((u1) objtype);
  80     event.commit();
  81   }
  82 }


  45                                                           size_t word_size,
  46                                                           MetaspaceObj::Type objtype,
  47                                                           Metaspace::MetadataType mdtype) const {
  48   send_allocation_failure_event<EventMetaspaceAllocationFailure>(cld, word_size, objtype, mdtype);
  49 }
  50 
  51 void MetaspaceTracer::report_metadata_oom(ClassLoaderData *cld,
  52                                          size_t word_size,
  53                                          MetaspaceObj::Type objtype,
  54                                          Metaspace::MetadataType mdtype) const {
  55   send_allocation_failure_event<EventMetaspaceOOM>(cld, word_size, objtype, mdtype);
  56 }
  57 
  58 template <typename E>
  59 void MetaspaceTracer::send_allocation_failure_event(ClassLoaderData *cld,
  60                                                     size_t word_size,
  61                                                     MetaspaceObj::Type objtype,
  62                                                     Metaspace::MetadataType mdtype) const {
  63   E event;
  64   if (event.should_commit()) {
  65     event.set_classLoader(cld);
  66     if (cld->is_anonymous()) {

  67       event.set_anonymousClassLoader(true);
  68     } else {





  69       event.set_anonymousClassLoader(false);
  70     }

  71     event.set_size(word_size * BytesPerWord);
  72     event.set_metadataType((u1) mdtype);
  73     event.set_metaspaceObjectType((u1) objtype);
  74     event.commit();
  75   }
  76 }