RFR: 8324066: "clhsdb jstack" should not by default scan for j.u.c locks because it can be very slow [v2]
Chris Plummer
cjplummer at openjdk.org
Fri Jan 19 05:54:29 UTC 2024
On Fri, 19 Jan 2024 05:40:02 GMT, David Holmes <dholmes at openjdk.org> wrote:
> I also wonder if we should be looking at a different way to track j.u.c lock usage, as searching the full heap does not seem at all reasonable.
Good question. It looks like bin/jstack does the same, but there is much less cost to doing this within hotspot than with using SA:
void ConcurrentLocksDump::dump_at_safepoint() {
// dump all locked concurrent locks
assert(SafepointSynchronize::is_at_safepoint(), "all threads are stopped");
GrowableArray<oop>* aos_objects = new (mtServiceability) GrowableArray<oop>(INITIAL_ARRAY_SIZE, mtServiceability);
// Find all instances of AbstractOwnableSynchronizer
HeapInspection::find_instances_at_safepoint(vmClasses::java_util_concurrent_locks_AbstractOwnableSynchronizer_klass(),
aos_objects);
// Build a map of thread to its owned AQS locks
build_map(aos_objects);
delete aos_objects;
}
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17479#issuecomment-1899810567
More information about the serviceability-dev
mailing list