< prev index next >

src/share/vm/runtime/java.cpp

Print this page




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "classfile/classLoader.hpp"
  27 #include "classfile/stringTable.hpp"
  28 #include "classfile/systemDictionary.hpp"
  29 #include "code/codeCache.hpp"
  30 #include "compiler/compileBroker.hpp"
  31 #include "compiler/compilerOracle.hpp"
  32 #include "gc/shared/genCollectedHeap.hpp"
  33 #include "interpreter/bytecodeHistogram.hpp"
  34 #if INCLUDE_JVMCI
  35 #include "jvmci/jvmciCompiler.hpp"
  36 #include "jvmci/jvmciRuntime.hpp"
  37 #endif

  38 #include "memory/oopFactory.hpp"
  39 #include "memory/universe.hpp"
  40 #include "oops/constantPool.hpp"
  41 #include "oops/generateOopMap.hpp"
  42 #include "oops/instanceKlass.hpp"
  43 #include "oops/instanceOop.hpp"
  44 #include "oops/method.hpp"
  45 #include "oops/objArrayOop.hpp"
  46 #include "oops/oop.inline.hpp"
  47 #include "oops/symbol.hpp"
  48 #include "prims/jvmtiExport.hpp"
  49 #include "runtime/arguments.hpp"
  50 #include "runtime/biasedLocking.hpp"
  51 #include "runtime/compilationPolicy.hpp"
  52 #include "runtime/deoptimization.hpp"
  53 #include "runtime/fprofiler.hpp"
  54 #include "runtime/init.hpp"
  55 #include "runtime/interfaceSupport.hpp"
  56 #include "runtime/java.hpp"
  57 #include "runtime/memprofiler.hpp"


 436   // Stop the WatcherThread. We do this before disenrolling various
 437   // PeriodicTasks to reduce the likelihood of races.
 438   if (PeriodicTask::num_tasks() > 0) {
 439     WatcherThread::stop();
 440   }
 441 
 442   // Print statistics gathered (profiling ...)
 443   if (Arguments::has_profile()) {
 444     FlatProfiler::disengage();
 445     FlatProfiler::print(10);
 446   }
 447 
 448   // shut down the StatSampler task
 449   StatSampler::disengage();
 450   StatSampler::destroy();
 451 
 452   // Stop concurrent GC threads
 453   Universe::heap()->stop();
 454 
 455   // Print GC/heap related information.
 456   if (PrintGCDetails) {
 457     Universe::print();
 458     AdaptiveSizePolicyOutput(0);
 459     if (Verbose) {
 460       ClassLoaderDataGraph::dump_on(gclog_or_tty);

 461     }
 462   }

 463 
 464   if (PrintBytecodeHistogram) {
 465     BytecodeHistogram::print();
 466   }
 467 
 468   if (JvmtiExport::should_post_thread_life()) {
 469     JvmtiExport::post_thread_end(thread);
 470   }
 471 
 472 
 473   EventThreadEnd event;
 474   if (event.should_commit()) {
 475       event.set_javalangthread(java_lang_Thread::thread_id(thread->threadObj()));
 476       event.commit();
 477   }
 478 
 479   // Always call even when there are not JVMTI environments yet, since environments
 480   // may be attached late and JVMTI must track phases of VM execution
 481   JvmtiExport::post_vm_death();
 482   Threads::shutdown_vm_agents();




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "classfile/classLoader.hpp"
  27 #include "classfile/stringTable.hpp"
  28 #include "classfile/systemDictionary.hpp"
  29 #include "code/codeCache.hpp"
  30 #include "compiler/compileBroker.hpp"
  31 #include "compiler/compilerOracle.hpp"
  32 #include "gc/shared/genCollectedHeap.hpp"
  33 #include "interpreter/bytecodeHistogram.hpp"
  34 #if INCLUDE_JVMCI
  35 #include "jvmci/jvmciCompiler.hpp"
  36 #include "jvmci/jvmciRuntime.hpp"
  37 #endif
  38 #include "logging/log.hpp"
  39 #include "memory/oopFactory.hpp"
  40 #include "memory/universe.hpp"
  41 #include "oops/constantPool.hpp"
  42 #include "oops/generateOopMap.hpp"
  43 #include "oops/instanceKlass.hpp"
  44 #include "oops/instanceOop.hpp"
  45 #include "oops/method.hpp"
  46 #include "oops/objArrayOop.hpp"
  47 #include "oops/oop.inline.hpp"
  48 #include "oops/symbol.hpp"
  49 #include "prims/jvmtiExport.hpp"
  50 #include "runtime/arguments.hpp"
  51 #include "runtime/biasedLocking.hpp"
  52 #include "runtime/compilationPolicy.hpp"
  53 #include "runtime/deoptimization.hpp"
  54 #include "runtime/fprofiler.hpp"
  55 #include "runtime/init.hpp"
  56 #include "runtime/interfaceSupport.hpp"
  57 #include "runtime/java.hpp"
  58 #include "runtime/memprofiler.hpp"


 437   // Stop the WatcherThread. We do this before disenrolling various
 438   // PeriodicTasks to reduce the likelihood of races.
 439   if (PeriodicTask::num_tasks() > 0) {
 440     WatcherThread::stop();
 441   }
 442 
 443   // Print statistics gathered (profiling ...)
 444   if (Arguments::has_profile()) {
 445     FlatProfiler::disengage();
 446     FlatProfiler::print(10);
 447   }
 448 
 449   // shut down the StatSampler task
 450   StatSampler::disengage();
 451   StatSampler::destroy();
 452 
 453   // Stop concurrent GC threads
 454   Universe::heap()->stop();
 455 
 456   // Print GC/heap related information.
 457   LogHandle(gc, heap, exit) log;
 458   if (log.is_info()) {
 459     ResourceMark rm;
 460     Universe::print_on(log.info_stream());
 461     if (log.is_trace()) {
 462       ClassLoaderDataGraph::dump_on(log.trace_stream());
 463     }
 464   }
 465   AdaptiveSizePolicyOutput::print();
 466 
 467   if (PrintBytecodeHistogram) {
 468     BytecodeHistogram::print();
 469   }
 470 
 471   if (JvmtiExport::should_post_thread_life()) {
 472     JvmtiExport::post_thread_end(thread);
 473   }
 474 
 475 
 476   EventThreadEnd event;
 477   if (event.should_commit()) {
 478       event.set_javalangthread(java_lang_Thread::thread_id(thread->threadObj()));
 479       event.commit();
 480   }
 481 
 482   // Always call even when there are not JVMTI environments yet, since environments
 483   // may be attached late and JVMTI must track phases of VM execution
 484   JvmtiExport::post_vm_death();
 485   Threads::shutdown_vm_agents();


< prev index next >