comparison src/share/vm/runtime/thread.cpp @ 3769:ef2d1b8f2dd4

7051430: CMS: ongoing CMS cycle should terminate abruptly to allow prompt JVM termination at exit Summary: It turns out that there is no need to explicitly stop CMS since the JVM is taken down at a terminal safepoint during which CMS threads are (terminally) inactive. This will need to be revised if and when we evolve in the future to a point where we allow JVM reincarnation in the same process, but those changes will be much more sweeping than just terminating CMS threads. The unused ::stop() methods will be removed in a separate CR. Also include in this CR is the fix for a small typo in the spelling of UseGCLogFileRotation in a message in arguments.cpp, brought to our attention by Rainer Jung and reviewed by minqi. Reviewed-by: johnc, jwilhelm
author ysr
date Mon, 13 Jun 2011 09:58:16 -0700
parents a80577f854f9
children 48048b59a551
comparison
equal deleted inserted replaced
3768:42df21744b50 3769:ef2d1b8f2dd4
3696 // 4945125 The vm thread comes to a safepoint during exit. 3696 // 4945125 The vm thread comes to a safepoint during exit.
3697 // GC vm_operations can get caught at the safepoint, and the 3697 // GC vm_operations can get caught at the safepoint, and the
3698 // heap is unparseable if they are caught. Grab the Heap_lock 3698 // heap is unparseable if they are caught. Grab the Heap_lock
3699 // to prevent this. The GC vm_operations will not be able to 3699 // to prevent this. The GC vm_operations will not be able to
3700 // queue until after the vm thread is dead. 3700 // queue until after the vm thread is dead.
3701 // After this point, we'll never emerge out of the safepoint before
3702 // the VM exits, so concurrent GC threads do not need to be explicitly
3703 // stopped; they remain inactive until the process exits.
3704 // Note: some concurrent G1 threads may be running during a safepoint,
3705 // but these will not be accessing the heap, just some G1-specific side
3706 // data structures that are not accessed by any other threads but them
3707 // after this point in a terminal safepoint.
3708
3701 MutexLocker ml(Heap_lock); 3709 MutexLocker ml(Heap_lock);
3702 3710
3703 VMThread::wait_for_vm_thread_exit(); 3711 VMThread::wait_for_vm_thread_exit();
3704 assert(SafepointSynchronize::is_at_safepoint(), "VM thread should exit at Safepoint"); 3712 assert(SafepointSynchronize::is_at_safepoint(), "VM thread should exit at Safepoint");
3705 VMThread::destroy(); 3713 VMThread::destroy();