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/utilities/LivenessAnalysis.java
/* * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * */ package sun.jvm.hotspot.utilities; import java.io.*; import java.util.*; import sun.jvm.hotspot.debugger.*; import sun.jvm.hotspot.gc.shared.*; import sun.jvm.hotspot.memory.*; import sun.jvm.hotspot.oops.*; import sun.jvm.hotspot.runtime.*; /** Finds all paths from roots to the specified set of objects. NOTE: currently only a subset of the roots known to the VM is exposed to the SA: objects on the stack, static fields in classes, and JNI handles. These should be most of the user-level roots keeping objects alive. */ public class LivenessAnalysis { // Used for debugging this code private static final boolean DEBUG = false; private LivenessAnalysis() {} public static LivenessPathList computeAllLivenessPaths(Oop target) { LivenessPathList list = computeAllLivenessPaths(target, true); if ((list == null) || (list.size() == 0)) { // Dead object return null; } return list; } //--------------------------------------------------------------------------- // Internals only below this point // // Returns true if a new path was completed, otherwise false // indicating there were no more paths to complete. // // The trimPathsThroughPopularObjects flag alters the behavior of // the returned results. If true, then if multiple paths to // different roots all go through a particular popular object, those // paths will be truncated and only one (arbitrary one) will be be // returned. On the other hand, if the target object itself is // popular and there are multiple distinct paths to it (indicating // that there are multiple objects pointing directly to it) then all // of those paths will be reported. private static LivenessPathList computeAllLivenessPaths(Oop target, boolean trimPathsThroughPopularObjects) { ReversePtrs rev = VM.getVM().getRevPtrs(); if (rev == null) { throw new RuntimeException("LivenessAnalysis requires ReversePtrs to have been computed"); } // Currently the reverse pointer analysis returns non-null results // only for live objects if (rev.get(target) == null) { // Object is dead return null; } // HashSet of Oops acting as a bit mask indicating which ones have // already been traversed Set/*<Oop>*/ visitedOops = new HashSet/*<Oop>*/(); // IdentityHashMap of LivenessElements acting as a bit mask // indicating which roots have already been traversed Map/*<LivenessElement, LivenessElement>*/ visitedRoots = new IdentityHashMap/*<LivenessElement, LivenessElement>*/(); visitedOops.add(target); // Construct the initial LivenessPath LivenessPathList list = new LivenessPathList(); { LivenessPath path = new LivenessPath(); path.push(new LivenessPathElement(target, null)); list.add(path); } // Iterate until done while (true) { // See if there are any incomplete paths left LivenessPath path = null; for (int i = list.size() - 1; i >= 0; i--) { LivenessPath tmp = list.get(i); if (!tmp.isComplete()) { path = tmp; break; } } // If no incomplete paths left, return if (path == null) { return list; } // Try to complete this path // Remove the path from the list of reported ones in // anticipation of completing it list.remove(path); try { // Fetch next set of reverse pointers for the last object on // the list ArrayList/*<LivenessPathElement>*/ nextPtrs = rev.get(path.peek().getObj()); // Depending on exactly what the reverse pointers analysis // yields, these results may be null, although currently they // won't be if (nextPtrs != null) { // Iterate these for (Iterator iter = nextPtrs.iterator(); iter.hasNext(); ) { LivenessPathElement nextElement = (LivenessPathElement) iter.next(); // See whether we've visited this element yet if ((nextElement.isRoot() && (visitedRoots.get(nextElement) == null)) || (!nextElement.isRoot() && !visitedOops.contains(nextElement.getObj()))) { // Show we've visited this one if (nextElement.isRoot()) { visitedRoots.put(nextElement, nextElement); } else { visitedOops.add(nextElement.getObj()); } // Create a new LivenessPath for each one LivenessPath nextPath = path.copy(); nextPath.push(nextElement); // Regardless of whether we found a root, put the // original path back on the list because we're going to // do depth-first searching rather than breadth-first list.add(path); list.add(nextPath); // See whether this path is complete (i.e., it // terminates in a root) if (trimPathsThroughPopularObjects && nextElement.isRoot()) { // Go back through the path list and remove all // incomplete paths ending in any of the intermediate // (non-root and non-terminal) nodes in this path. // This has the effect of removing multiple paths // going through popular objects. for (int i = 1; i < nextPath.size() - 1; i++) { LivenessPathElement el = nextPath.get(i); int j = 0; while (j < list.size()) { LivenessPath curPath = list.get(j); // We can use an object identity since these // intermediate nodes are canonicalized via the // ReversePtrsAnalysis if (curPath.peek() == el) { list.remove(curPath); } else { j++; } } } } // Do depth-first searching, not breadth-first break; } } } } catch (Exception e) { System.err.println("LivenessAnalysis: WARNING: " + e + " during traversal"); } } } }
⏎ sun/jvm/hotspot/utilities/LivenessAnalysis.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, 131657👍, 0💬
Popular Posts:
What Is poi-3.5.jar - Part 2? poi-3.5.jar is one of the JAR files for Apache POI 3.5, which provides...
Java Architecture for XML Binding (JAXB) is a Java API that allows Java developers to map Java class...
What Is junit-3.8.1.jar? junit-3.8.1.jar is the version 3.8.1 of JUnit JAR library file. JUnit is a ...
Apache BCEL Source Code Files are inside the Apache BCEL source package file like bcel-6.6.1-src.zip...
JRE 8 plugin.jar is the JAR file for JRE 8 Java Control Panel Plugin interface and tools. JRE (Java ...