Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 11 jdk.hotspot.agent.jmod - Hotspot Agent Module
JDK 11 jdk.hotspot.agent.jmod is the JMOD file for JDK 11 Hotspot Agent module.
JDK 11 Hotspot Agent module compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\jdk.hotspot.agent.jmod.
JDK 11 Hotspot Agent module compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.
JDK 11 Hotspot Agent module source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\jdk.hotspot.agent.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ sun/jvm/hotspot/runtime/DeadlockDetector.java
/* * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * */ package sun.jvm.hotspot.runtime; import sun.jvm.hotspot.debugger.*; import sun.jvm.hotspot.memory.*; import sun.jvm.hotspot.oops.*; import java.io.*; import java.util.*; import java.util.Map.Entry; /** Prints information about Java-level deadlocks in supplied 'tty'. */ public class DeadlockDetector { public static void print(PrintStream tty) { print(tty, true); } /** prints zero or more deadlocks into 'tty' taking current snapshot of Java threads and locks */ public static void print(PrintStream tty, boolean concurrentLocks) { tty.println("Deadlock Detection:"); tty.println(); int globalDfn = 0, thisDfn; int numberOfDeadlocks = 0; JavaThread currentThread = null, previousThread = null; ObjectMonitor waitingToLockMonitor = null; Oop waitingToLockBlocker = null; threads = VM.getVM().getThreads(); heap = VM.getVM().getObjectHeap(); createThreadTable(); Iterator i = threadTable.entrySet().iterator(); while (i.hasNext()) { Entry e = (Entry)i.next(); if (dfn(e) >= 0) { // this thread was already visited continue; } thisDfn = globalDfn; JavaThread thread = (JavaThread)e.getKey(); previousThread = thread; // When there is a deadlock, all the monitors involved in the dependency // cycle must be contended and heavyweight. So we only care about the // heavyweight monitor a thread is waiting to lock. try { waitingToLockMonitor = thread.getCurrentPendingMonitor(); } catch (RuntimeException re) { tty.println("This version of HotSpot VM doesn't support deadlock detection."); return; } Klass abstractOwnableSyncKlass = null; if (concurrentLocks) { waitingToLockBlocker = thread.getCurrentParkBlocker(); SystemDictionary sysDict = VM.getVM().getSystemDictionary(); abstractOwnableSyncKlass = sysDict.getAbstractOwnableSynchronizerKlass(); } while (waitingToLockMonitor != null || waitingToLockBlocker != null) { if (waitingToLockMonitor != null) { currentThread = threads.owningThreadFromMonitor(waitingToLockMonitor); } else { if (concurrentLocks) { if (waitingToLockBlocker.isA(abstractOwnableSyncKlass)) { Oop threadOop = OopUtilities.abstractOwnableSynchronizerGetOwnerThread(waitingToLockBlocker); if (threadOop != null) { currentThread = OopUtilities.threadOopGetJavaThread(threadOop); } } } } if (currentThread == null) { // No dependency on another thread break; } if (dfn(currentThread) < 0) { // First visit to this thread threadTable.put(currentThread, new Integer(globalDfn++)); } else if (dfn(currentThread) < thisDfn) { // Thread already visited, and not on a (new) cycle break; } else if (currentThread == previousThread) { // Self-loop, ignore break; } else { // We have a (new) cycle numberOfDeadlocks ++; printOneDeadlock(tty, currentThread, concurrentLocks); break; } previousThread = currentThread; waitingToLockMonitor = (ObjectMonitor)currentThread.getCurrentPendingMonitor(); if (concurrentLocks) { waitingToLockBlocker = currentThread.getCurrentParkBlocker(); } } } switch (numberOfDeadlocks) { case 0: tty.println("No deadlocks found."); break; case 1: tty.println("Found a total of 1 deadlock."); break; default: tty.println("Found a total of " + numberOfDeadlocks + " deadlocks."); break; } tty.println(); } //-- Internals only below this point private static Threads threads; private static ObjectHeap heap; private static HashMap threadTable; private static void createThreadTable() { threadTable = new HashMap(); for (JavaThread cur = threads.first(); cur != null; cur = cur.next()) { // initialize dfn for each thread to -1 threadTable.put(cur, new Integer(-1)); } } private static int dfn(JavaThread thread) { Object obj = threadTable.get(thread); if (obj != null) { return ((Integer)obj).intValue(); } return -1; } private static int dfn(Entry e) { return ((Integer)e.getValue()).intValue(); } private static void printOneDeadlock(PrintStream tty, JavaThread thread, boolean concurrentLocks) { tty.println("Found one Java-level deadlock:"); tty.println("============================="); ObjectMonitor waitingToLockMonitor = null; Oop waitingToLockBlocker = null; JavaThread currentThread = thread; do { tty.println(); tty.println("\"" + currentThread.getThreadName() + "\":"); waitingToLockMonitor = currentThread.getCurrentPendingMonitor(); if (waitingToLockMonitor != null) { tty.print(" waiting to lock Monitor@" + waitingToLockMonitor.getAddress()); OopHandle obj = waitingToLockMonitor.object(); Oop oop = heap.newOop(obj); if (obj != null) { tty.print(" (Object@"); Oop.printOopAddressOn(oop, tty); tty.print(", a " + oop.getKlass().getName().asString() + ")" ); tty.print(",\n which is held by"); } else { // No Java object associated - a raw monitor tty.print(" (raw monitor),\n which is held by"); } currentThread = threads.owningThreadFromMonitor(waitingToLockMonitor); tty.print(" \"" + currentThread.getThreadName() + "\""); } else if (concurrentLocks) { waitingToLockBlocker = currentThread.getCurrentParkBlocker(); tty.print(" waiting for ownable synchronizer "); Oop.printOopAddressOn(waitingToLockBlocker, tty); tty.print(", (a " + waitingToLockBlocker.getKlass().getName().asString() + ")" ); Oop threadOop = OopUtilities.abstractOwnableSynchronizerGetOwnerThread(waitingToLockBlocker); currentThread = OopUtilities.threadOopGetJavaThread(threadOop); tty.print(",\n which is held by"); tty.print(" \"" + currentThread.getThreadName() + "\""); } } while (!currentThread.equals(thread)); tty.println(); tty.println(); } }
⏎ sun/jvm/hotspot/runtime/DeadlockDetector.java
Or download all of them as a single archive file:
File name: jdk.hotspot.agent-11.0.1-src.zip File size: 1243786 bytes Release date: 2018-11-04 Download
⇒ JDK 11 jdk.httpserver.jmod - HTTP Server Module
2020-02-29, 130386👍, 0💬
Popular Posts:
Swingx is the SwingLabs Swing Component Extensions. JAR File Size and Download Location: File name: ...
Where to find answers to frequently asked questions on Downloading and Installing Connector/J - JDBC...
JDK 11 jdk.dynalink.jmod is the JMOD file for JDK 11 Dynamic Linking module. JDK 11 Dynamic Linking ...
Commons VFS provides a single API for accessing various different file systems. It presents a unifor...
JDK 8 tools.jar is the JAR file for JDK 8 tools. It contains Java classes to support different JDK t...