diff -r 7815eaceaa8c -r 6f817ce50129 src/share/vm/runtime/synchronizer.cpp --- a/src/share/vm/runtime/synchronizer.cpp Thu Apr 18 14:03:37 2013 -0400 +++ b/src/share/vm/runtime/synchronizer.cpp Fri Apr 19 11:08:52 2013 -0700 @@ -1012,7 +1012,8 @@ // Both the local and global free lists are empty -- resort to malloc(). // In the current implementation objectMonitors are TSM - immortal. assert (_BLOCKSIZE > 1, "invariant") ; - ObjectMonitor * temp = new ObjectMonitor[_BLOCKSIZE]; + ObjectMonitor * temp; + NEW_C_HEAP_OBJECT_ARRAY(temp, ObjectMonitor, _BLOCKSIZE, mtInternal, 0, AllocFailStrategy::RETURN_NULL); // NOTE: (almost) no way to recover if allocation failed. // We might be able to induce a STW safepoint and scavenge enough