- cryostat: JFR recording in the cloud
- pyroscope: Method sampling in the cloud
- parca: System wide method sampling in the cloud with eBPF
- IntelliJ Plugin
- JFR Events Website
If any issues arise, please don't hesitate to ask.
Before diving into the code, please clone the OpenJDK JDK repository on a machine running Linux and build it according to the build instructions.
This should give you a running OpenJDK. Add it to your path and run a simple Java "Hello, World" program to confirm everything is set up correctly.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.concurrent.ExecutorService; | |
import java.util.concurrent.Executors; | |
public class CpuCoreHog { | |
public static void main(String[] args) { | |
// Get the number of available processors (cores) | |
int cores = Runtime.getRuntime().availableProcessors() * 5; | |
System.out.println("Running on " + cores + " cores."); | |
// Create a fixed thread pool with the number of available cores | |
ExecutorService executorService = Executors.newFixedThreadPool(cores); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.IOException; | |
import java.net.*; | |
import com.sun.net.httpserver.HttpServer; | |
import com.sun.net.httpserver.HttpHandler; | |
import com.sun.net.httpserver.HttpExchange; | |
class HttpRequestsExample { | |
private static HttpServer server; |
- main page: https://ebpf.io
- some information: https://www.brendangregg.com/ebpf.html
- https://www.infoq.com/presentations/facebook-google-bpf-linux-kernel/
- segment.setUtf8String(0, obj); -> segment.setString(0, obj);
- same with getUtf8String
- MemoryLayout.sequenceLayout(JAVA_BYTE) -> MemoryLayout.sequenceLayout(0, JAVA_BYTE)
- arena.allocateUtf8String(string) -> allocateFrom(string)
- var readers = arena.allocateArray(PanamaUtil.POINTER, perfBuffers.size()); -> var readers = arena.allocate(PanamaUtil.POINTER, perfBuffers.size());
- jextract:
- Callbacks: "X" -> "X.function"
- bcc_symbol.module$get(sym) -> module(sym)
- Lib.open(pathInC, O_RDONLY) (var args (?)) -> Lib.open.makeInvoker().apply(pathInC, O_RDONLY) (
extern int open(const char *__file, int __oflag, ...)
)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Sample file to test the trace module. | |
This should print: | |
... | |
********** Trace Results ********** | |
Used classes: | |
only static init: | |
not only static init: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Name("minecraft.ChunkGeneration") | |
@Label("Chunk Generation") | |
@Category({"Minecraft", "World Generation"}) | |
class ChunkGeneration extends jdk.jfr.Event { | |
@Label("Start Time") | |
@Timestamp("TICKS") | |
long startTime; | |
@Label("Duration") | |
@Timespan("TICKS") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
! 2023-08-01 https://twitter.com | |
twitter.com##a.r-13qz1uu.r-rjfia.r-1ny4l3l.r-16y2uox.r-eqz5dr.r-6koalj.r-1loqt21.r-1habvwh.css-1dbjc4n.css-18t94o4.css-4rbku5:nth-of-type(7) | |
! 2023-09-10 https://twitter.com | |
twitter.com##a.r-13qz1uu.r-oyd9sg.r-1ny4l3l.r-eqz5dr.r-13awgt0.r-6koalj.r-1loqt21.r-1habvwh.css-1dbjc4n.css-18t94o4.css-4rbku5:nth-of-type(7) | |
! 2023-11-21 https://twitter.com | |
twitter.com###id__q3p36maqo9 > div.r-13awgt0.r-1h0z5md.r-18u37iz.css-175oi2r > .r-1ny4l3l.r-lrvibr.r-bztko3.r-bt1l66.r-1777fci.css-175oi2r > .r-3s2u2q.r-clp7b1.r-o7ynqc.r-1h0z5md.r-6koalj.r-1awozwy.r-16dba41.r-rjixqe.r-a023e6.r-37j5jr.r-qvutc0.r-bcqeeo.css-1rynq56 > .r-1udh08x.r-xoduu5.css-175oi2r > span | |
twitter.com###id__cglm8gn7hvg > div.r-13awgt0.r-1h0z5md.r-18u37iz.css-175oi2r > .r-1ny4l3l.r-lrvibr.r-bztko3.r-bt1l66.r-1777fci.css-175oi2r > .r-3s2u2q.r-clp7b1.r-o7ynqc.r-1h0z5md.r-6koalj.r-1awozwy.r-16dba41.r-rjixqe.r-a023e6.r-37j5jr.r-qvutc0.r-bcqeeo.css-1rynq56 > .r-1udh08x.r-xoduu5.css-175oi2r > span > .r-1pn2ns4.r-1k6nrdp.r-1c |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.lang.reflect.InvocationTargetException; | |
import java.lang.reflect.Method; | |
public class Main { | |
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { | |
Class<?> klass = Main.class; | |
Method mainMethod = klass.getMethod("test"); | |
mainMethod.invoke(null); | |
} |
NewerOlder