Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
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 (322)
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, ≈409🔥, 0💬
Popular Posts:
JDK 11 java.desktop.jmod is the JMOD file for JDK 11 Desktop module. JDK 11 Desktop module compiled ...
JDK 11 jdk.security.auth.jmod is the JMOD file for JDK 11 Security Auth module. JDK 11 Security Auth...
Apache Commons Lang 3 is the 3rd version of Apache Commons Lang, which provides a host of helper uti...
JDK 11 java.smartcardio.jmod is the JMOD file for JDK 11 Smartcardio module. JDK 11 Smart Card IO mo...
JDK 11 jdk.management.agent.jmo dis the JMOD file for JDK 11 Management Agent module. JDK 11 Managem...