diff --git a/src/share/vm/runtime/java.cpp b/src/share/vm/runtime/java.cpp index ad6399495b0edd2f234b281a2c5ba51cae9b5d3d..fb26ad9ddfc826ab6e1e16a3167a98cf290813b1 100644 --- a/src/share/vm/runtime/java.cpp +++ b/src/share/vm/runtime/java.cpp @@ -542,6 +542,10 @@ void before_exit(JavaThread * thread) { BeforeExit_lock->notify_all(); } + // Shutdown NMT before exit. Otherwise, + // it will run into trouble when system destroys static variables. + MemTracker::shutdown(MemTracker::NMT_normal); + #undef BEFORE_EXIT_NOT_RUN #undef BEFORE_EXIT_RUNNING #undef BEFORE_EXIT_DONE diff --git a/src/share/vm/runtime/thread.cpp b/src/share/vm/runtime/thread.cpp index db3cace3d64b3456600fef6c381bc237f6ef462c..971f4f8dad178db79967a80d3368e5b504f3586c 100644 --- a/src/share/vm/runtime/thread.cpp +++ b/src/share/vm/runtime/thread.cpp @@ -4011,10 +4011,6 @@ bool Threads::destroy_vm() { Mutex::_as_suspend_equivalent_flag); } - // Shutdown NMT before exit. Otherwise, - // it will run into trouble when system destroys static variables. - MemTracker::shutdown(MemTracker::NMT_normal); - // Hang forever on exit if we are reporting an error. if (ShowMessageBoxOnError && is_error_reported()) { os::infinite_sleep();