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 "aot/aotLoader.hpp"
27 #include "classfile/classLoader.hpp"
28 #include "classfile/stringTable.hpp"
29 #include "classfile/systemDictionary.hpp"
30 #include "code/codeCache.hpp"
31 #include "compiler/compileBroker.hpp"
32 #include "compiler/compilerOracle.hpp"
33 #include "gc/shared/genCollectedHeap.hpp"
34 #include "interpreter/bytecodeHistogram.hpp"
35 #if INCLUDE_JVMCI
36 #include "jvmci/jvmciCompiler.hpp"
37 #include "jvmci/jvmciRuntime.hpp"
38 #endif
39 #include "logging/log.hpp"
40 #include "memory/oopFactory.hpp"
41 #include "memory/resourceArea.hpp"
42 #include "memory/universe.hpp"
43 #include "oops/constantPool.hpp"
44 #include "oops/generateOopMap.hpp"
45 #include "oops/instanceKlass.hpp"
46 #include "oops/instanceOop.hpp"
47 #include "oops/method.hpp"
48 #include "oops/objArrayOop.hpp"
49 #include "oops/oop.inline.hpp"
50 #include "oops/symbol.hpp"
51 #include "prims/jvmtiExport.hpp"
52 #include "runtime/arguments.hpp"
53 #include "runtime/biasedLocking.hpp"
54 #include "runtime/compilationPolicy.hpp"
55 #include "runtime/deoptimization.hpp"
56 #include "runtime/fprofiler.hpp"
57 #include "runtime/init.hpp"
58 #include "runtime/interfaceSupport.hpp"
59 #include "runtime/java.hpp"
462 WatcherThread::stop();
463 }
464
465 // Print statistics gathered (profiling ...)
466 if (Arguments::has_profile()) {
467 FlatProfiler::disengage();
468 FlatProfiler::print(10);
469 }
470
471 // shut down the StatSampler task
472 StatSampler::disengage();
473 StatSampler::destroy();
474
475 // Stop concurrent GC threads
476 Universe::heap()->stop();
477
478 // Print GC/heap related information.
479 Log(gc, heap, exit) log;
480 if (log.is_info()) {
481 ResourceMark rm;
482 Universe::print_on(log.info_stream());
483 if (log.is_trace()) {
484 ClassLoaderDataGraph::dump_on(log.trace_stream());
485 }
486 }
487 AdaptiveSizePolicyOutput::print();
488
489 if (PrintBytecodeHistogram) {
490 BytecodeHistogram::print();
491 }
492
493 if (JvmtiExport::should_post_thread_life()) {
494 JvmtiExport::post_thread_end(thread);
495 }
496
497 // Always call even when there are not JVMTI environments yet, since environments
498 // may be attached late and JVMTI must track phases of VM execution
499 JvmtiExport::post_vm_death();
500 Threads::shutdown_vm_agents();
501
502 // Terminate the signal thread
503 // Note: we don't wait until it actually dies.
504 os::terminate_signal_thread();
|
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 "aot/aotLoader.hpp"
27 #include "classfile/classLoader.hpp"
28 #include "classfile/stringTable.hpp"
29 #include "classfile/systemDictionary.hpp"
30 #include "code/codeCache.hpp"
31 #include "compiler/compileBroker.hpp"
32 #include "compiler/compilerOracle.hpp"
33 #include "gc/shared/genCollectedHeap.hpp"
34 #include "interpreter/bytecodeHistogram.hpp"
35 #if INCLUDE_JVMCI
36 #include "jvmci/jvmciCompiler.hpp"
37 #include "jvmci/jvmciRuntime.hpp"
38 #endif
39 #include "logging/log.hpp"
40 #include "logging/logStream.hpp"
41 #include "memory/oopFactory.hpp"
42 #include "memory/resourceArea.hpp"
43 #include "memory/universe.hpp"
44 #include "oops/constantPool.hpp"
45 #include "oops/generateOopMap.hpp"
46 #include "oops/instanceKlass.hpp"
47 #include "oops/instanceOop.hpp"
48 #include "oops/method.hpp"
49 #include "oops/objArrayOop.hpp"
50 #include "oops/oop.inline.hpp"
51 #include "oops/symbol.hpp"
52 #include "prims/jvmtiExport.hpp"
53 #include "runtime/arguments.hpp"
54 #include "runtime/biasedLocking.hpp"
55 #include "runtime/compilationPolicy.hpp"
56 #include "runtime/deoptimization.hpp"
57 #include "runtime/fprofiler.hpp"
58 #include "runtime/init.hpp"
59 #include "runtime/interfaceSupport.hpp"
60 #include "runtime/java.hpp"
463 WatcherThread::stop();
464 }
465
466 // Print statistics gathered (profiling ...)
467 if (Arguments::has_profile()) {
468 FlatProfiler::disengage();
469 FlatProfiler::print(10);
470 }
471
472 // shut down the StatSampler task
473 StatSampler::disengage();
474 StatSampler::destroy();
475
476 // Stop concurrent GC threads
477 Universe::heap()->stop();
478
479 // Print GC/heap related information.
480 Log(gc, heap, exit) log;
481 if (log.is_info()) {
482 ResourceMark rm;
483 LogStream ls_info(log.info());
484 Universe::print_on(&ls_info);
485 if (log.is_trace()) {
486 LogStream ls_trace(log.trace());
487 ClassLoaderDataGraph::dump_on(&ls_trace);
488 }
489 }
490 AdaptiveSizePolicyOutput::print();
491
492 if (PrintBytecodeHistogram) {
493 BytecodeHistogram::print();
494 }
495
496 if (JvmtiExport::should_post_thread_life()) {
497 JvmtiExport::post_thread_end(thread);
498 }
499
500 // Always call even when there are not JVMTI environments yet, since environments
501 // may be attached late and JVMTI must track phases of VM execution
502 JvmtiExport::post_vm_death();
503 Threads::shutdown_vm_agents();
504
505 // Terminate the signal thread
506 // Note: we don't wait until it actually dies.
507 os::terminate_signal_thread();
|