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.jfr.jmod - JFR Module
JDK 11 jdk.jfr.jmod is the JMOD file for JDK 11 JFR module.
JDK 11 JFR module compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\jdk.jfr.jmod.
JDK 11 JFR module compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.
JDK 11 JFR module source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\jdk.jfr.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ jdk/jfr/internal/RequestEngine.java
/* * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package jdk.jfr.internal; import java.security.AccessControlContext; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.concurrent.CopyOnWriteArrayList; import java.util.function.Predicate; public final class RequestEngine { private final static JVM jvm = JVM.getJVM(); final static class RequestHook { private final Runnable hook; private final PlatformEventType type; private final AccessControlContext accessControllerContext; private long delta; // Java events private RequestHook(AccessControlContext acc, PlatformEventType eventType, Runnable hook) { this.hook = hook; this.type = eventType; this.accessControllerContext = acc; } // native events RequestHook(PlatformEventType eventType) { this(null, eventType, null); } private void execute() { try { if (accessControllerContext == null) { // native jvm.emitEvent(type.getId(), JVM.counterTime(), 0); Logger.log(LogTag.JFR_SYSTEM_EVENT, LogLevel.DEBUG, ()-> "Executed periodic hook for " + type.getLogName()); } else { executeSecure(); } } catch (Throwable e) { // Prevent malicious user to propagate exception callback in the wrong context Logger.log(LogTag.JFR_SYSTEM_EVENT, LogLevel.WARN, "Exception occured during execution of period hook for " + type.getLogName()); } } private void executeSecure() { AccessController.doPrivileged(new PrivilegedAction<Void>() { @Override public Void run() { try { hook.run(); Logger.log(LogTag.JFR_EVENT, LogLevel.DEBUG, ()-> "Executed periodic hook for " + type.getLogName()); } catch (Throwable t) { // Prevent malicious user to propagate exception callback in the wrong context Logger.log(LogTag.JFR_EVENT, LogLevel.WARN, "Exception occured during execution of period hook for " + type.getLogName()); } return null; } }, accessControllerContext); } } private final static List<RequestHook> entries = new CopyOnWriteArrayList<>(); private static long lastTimeMillis; // Insertion takes O(2*n), could be O(1) with HashMap, but // thinking is that CopyOnWriteArrayList is faster // to iterate over, which will happen more over time. public static void addHook(AccessControlContext acc, PlatformEventType type, Runnable hook) { Objects.requireNonNull(acc); RequestHook he = new RequestHook(acc, type, hook); for (RequestHook e : entries) { if (e.hook == hook) { throw new IllegalArgumentException("Hook has already been added"); } } he.type.setEventHook(true); entries.add(he); logHook("Added", type); } private static void logHook(String action, PlatformEventType type) { if (type.isJDK() || type.isJVM()) { Logger.log(LogTag.JFR_SYSTEM_EVENT, LogLevel.INFO, action + " periodic hook for " + type.getLogName()); } else { Logger.log(LogTag.JFR_EVENT, LogLevel.INFO, action + " periodic hook for " + type.getLogName()); } } // Takes O(2*n), see addHook. public static boolean removeHook(Runnable hook) { for (RequestHook rh : entries) { if (rh.hook == hook) { entries.remove(rh); rh.type.setEventHook(false); logHook("Removed", rh.type); return true; } } return false; } // Only to be used for JVM events. No access control contest // or check if hook already exists static void addHooks(List<RequestHook> newEntries) { List<RequestHook> addEntries = new ArrayList<>(); for (RequestHook rh : newEntries) { rh.type.setEventHook(true); addEntries.add(rh); logHook("Added", rh.type); } entries.addAll(newEntries); } static void doChunkEnd() { doChunk(x -> x.isEndChunk()); } static void doChunkBegin() { doChunk(x -> x.isBeginChunk()); } private static void doChunk(Predicate<PlatformEventType> predicate) { for (RequestHook requestHook : entries) { PlatformEventType s = requestHook.type; if (s.isEnabled() && predicate.test(s)) { requestHook.execute(); } } } static long doPeriodic() { return run_requests(entries); } // code copied from native impl. private static long run_requests(Collection<RequestHook> entries) { long last = lastTimeMillis; // Bug 9000556 - current time millis has rather lame resolution // The use of os::elapsed_counter() is deliberate here, we don't // want it exchanged for os::ft_elapsed_counter(). // Keeping direct call os::elapsed_counter() here for reliable // real time values in order to decide when registered requestable // events are due. long now = System.currentTimeMillis(); long min = 0; long delta = 0; if (last == 0) { last = now; } // time from then to now delta = now - last; if (delta < 0) { // to handle time adjustments // for example Daylight Savings lastTimeMillis = now; return 0; } for (RequestHook he : entries) { long left = 0; PlatformEventType es = he.type; // Not enabled, skip. if (!es.isEnabled() || es.isEveryChunk()) { continue; } long r_period = es.getPeriod(); long r_delta = he.delta; // add time elapsed. r_delta += delta; // above threshold? if (r_delta >= r_period) { // Bug 9000556 - don't try to compensate // for wait > period r_delta = 0; he.execute(); ; } // calculate time left left = (r_period - r_delta); /** * nothing outside checks that a period is >= 0, so left can end up * negative here. ex. (r_period =(-1)) - (r_delta = 0) if it is, * handle it. */ if (left < 0) { left = 0; } // assign delta back he.delta = r_delta; if (min == 0 || left < min) { min = left; } } lastTimeMillis = now; return min; } }
⏎ jdk/jfr/internal/RequestEngine.java
Or download all of them as a single archive file:
File name: jdk.jfr-11.0.1-src.zip File size: 237632 bytes Release date: 2018-11-04 Download
⇒ JDK 11 jdk.jlink.jmod - JLink Tool
2020-06-30, 37701👍, 0💬
Popular Posts:
JDK 11 jdk.jshell.jmod is the JMOD file for JDK 11 JShell tool, which can be invoked by the "jshell"...
The JSR 105 XML Digital Signature 1.0.1 FCS implementation provides an API and implementation that a...
What Is mail.jar of JavaMail 1.3? I got the JAR file from javamail-1_3.zip. mail.jar in javamail-1_3...
ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify ex...
What Is activation.jar? I heard it's related to JAF (JavaBeans Activation Framework) 1.0.2? The if y...