awesome-jvm
JVM tools
A curated list of performance-related JVM technologies and tools
A curated list of awesome loosely performance related JVM stuff. Inspired by awesome-python.
2k stars
151 watching
219 forks
last commit: about 3 years ago
Linked from 6 awesome lists
Awesome JVM / Bytecode | |||
| asmtools | Used to develop tools for the production of Java .class files | ||
| Byte Buddy | Code generation library creating Java classes at runtime without the help of a compiler | ||
| Jitescript | 188 | over 4 years ago | Bytecode generation library similar to BiteScript |
Awesome JVM / Garbage collectors | |||
| Azul Pauseless Garbage Collection | Providing continuous, pauseless operation for Java applications | ||
| Balanced GC | GC policy available in the Java Virtual Machine for IBM WebSphere Application Server V8 | ||
| Epsilon GC | Completely passive GC implementation with bounded allocation limit, and lowest runtime performance overhead possible | ||
| G1 | The Garbage-First Garbage Collector | ||
| Shenandoah | Ultra-Low-Pause-Time Garbage Collector | ||
| The Garbage Collection Handbook | Book that addresses new challenges to garbage collection made by recent advances in hardware and software | ||
| ZGC | Garbage collector optimized for low latency and very large heaps | ||
Awesome JVM / Load tools | |||
| Gatling | Asynchronous non-blocking scenario driven load testing tool for testing HTTP servers | ||
| wrk2 | 4,290 | over 1 year ago | A constant throughput, correct latency recording variant of wrk |
Awesome JVM / Languages | |||
| Ceylon | Object-oriented, strong and static programming language with an emphasis on immutability, created by Red Hat | ||
| Clojure | Dialect of Lisp created by Rich Hickey. Dynamically typed with emphasis on functional programming | ||
| Erjang | A JVM-based Erlang VM | ||
| Eta | Pure, lazy, strongly typed functional programming language on the JVM | ||
| Frege | 3,640 | about 3 years ago | Pure functional programming language in the spirit of Haskell |
| gojava | 184 | over 7 years ago | Java bindings for Go packages |
| Golo | A simple dynamic language that makes extensive usage of | ||
| Groovy | Optionally typed and dynamic language, with static-typing and static compilation capabilities | ||
| Java | General-purpose, concurrent, strongly typed, class-based object-oriented language | ||
| JRuby | Implementation of the Ruby language on the JVM | ||
| JPHP | 1,712 | almost 4 years ago | PHP on the Java VM |
| Jython | Python for the Java Platform | ||
| Kawa | Extension of the Scheme language, which is in the Lisp family of programming languages | ||
| Kotlin | Statically typed programming language for the JVM, Android and the browser | ||
| LuaJ | Java-centric implementation of lua vm built to leverage standard Java features | ||
| Nashorn | Lightweight high-performance JavaScript runtime in Java with a native JVM | ||
| OCaml-Java | Supports OCaml language v4. Generates plain Java bytecode and have seamless integration with Java | ||
| Rembulan | 163 | over 5 years ago | Rembulan is an implementation of Lua 5.3 for the JVM, written in pure Java with minimal dependencies |
| Renjin | JVM-based interpreter for the R language for the statistical analysis | ||
| Scala | Strong and static programming language that combine object-oriented and functional programming ideas | ||
| Xtend | Flexible and expressive dialect of Java, which compiles into Java 5 source code | ||
Awesome JVM / Machine Learning | |||
| Deeplearning4j | Open-Source, Distributed, Deep Learning Library for the JVM | ||
| H2O | Fast statistical, machine learning & math runtime | ||
| Smile | 6,066 | 11 months ago | Statistical Machine Intelligence & Learning Engine |
Awesome JVM / Memory and concurrency | |||
| Agera | 7,194 | almost 4 years ago | Reactive Programming for Android by Google |
| Agrona | 2,900 | 11 months ago | Library of data structures and utility methods that are a common need when building high-performance applications |
| Apache Arrow | A high-performance cross-system data layer for columnar in-memory analytics | ||
| bloofi | 78 | over 9 years ago | Java implementation of multidimensional Bloom filters |
| Cap’n Proto | Insanely fast data interchange format and capability-based RPC system | ||
| caffeine | 15,998 | 11 months ago | A high performance caching library for Java 8 |
| Chronicle-Bytes | 408 | 11 months ago | Low level memory access wrappers |
| Chronicle-Queue | 3,350 | 11 months ago | Micro second messaging that stores everything to disk |
| Chronicle-Map | 2,800 | 11 months ago | In-memory key-value store designed for low-latency and/or multi-process applications |
| clj-ds | 219 | almost 2 years ago | Clojure's data structures modified for use outside of Clojure |
| colfer | 746 | about 1 year ago | Binary serialization format and class generator |
| commons-math | Library of lightweight, self-contained mathematics and statistics components | ||
| CuckooFilter4J | 175 | over 2 years ago | Bloom filter replacement for approximated set-membership queries |
| cyclops | 1,319 | over 2 years ago | Integration modules for RxJava, Reactor, FunctionalJava, Guava & Javaslang |
| Eclipse Collections | 2,469 | 12 months ago | Collections framework for Java |
| externalsortinginjava | 254 | over 2 years ago | Sort very large files using multiple cores and an external-memory algorithm |
| failsafe | 4,203 | over 1 year ago | A lightweight, zero-dependency library for handling failures |
| fasttuple | 142 | almost 4 years ago | Collections that are laid out adjacently in both on- and off-heap memory |
| fast-uuid | 168 | almost 3 years ago | Java library for quickly and efficiently parsing and writing UUIDs |
| FlatBuffers | Efficient cross platform serialization library for C++, C#, Go, Java, JavaScript, PHP, and Python | ||
| geohash | 413 | 11 months ago | Java utility methods for geohashing |
| gs-collections | 1,812 | over 2 years ago | Goldman Sachs collections framework |
| hollow | 1,209 | 11 months ago | Java library and comprehensive toolset for harnessing small to moderately sized in-memory datasets |
| high-scale-lib | 415 | over 10 years ago | Cliff Click's High Scale Library |
| hppc | 987 | over 1 year ago | High Performance Primitive Collections |
| injector | 59 | over 10 years ago | A new Executor for Java |
| java-concurrent-hash-trie-map | 151 | about 5 years ago | Java port of a concurrent trie hash map implementation from Scala collections |
| java-hll | 313 | over 7 years ago | Java library for the HyperLogLog algorithm |
| JavaFastPFOR | 539 | over 1 year ago | Library to compress and uncompress arrays of integers very fast |
| java-string-similarity | 2,697 | over 3 years ago | String similarity and distance measures, including Levenshtein edit distance and sibblings, Jaro-Winkler, Longest Common Subsequence, cosine similarity etc |
| JCTools | Concurrent data structures currently missing from the JDK | ||
| DSL-JSON | High performance JSON library with advanced compile-time databinding | ||
| jsoniter | Claims to be the fastest JSON parser ever (copy of DSL-JSON) | ||
| jOOL | 2,092 | about 1 year ago | Useful extensions to Java 8 lambdas |
| Koloboke | 1,010 | over 8 years ago | Java Collections til the last breadcrumb of memory and performance |
| LevelDB | 1,537 | almost 3 years ago | Rewrite (port) of LevelDB in Java |
| lightweight_trie | 47 | over 13 years ago | A very memory-efficient trie (radix tree) implementation |
| lmdbjni | 204 | over 4 years ago | Java API to LMDB (HawtJNI) which is an ultra-fast, ultra-compact key-value embedded data store written in C |
| lmdbjava | 806 | over 1 year ago | Java API to LMDB (JNR) which is an ultra-fast, ultra-compact key-value embedded data store written in C |
| low-gc-membuffers | 136 | over 3 years ago | In-memory circular buffers that use direct ByteBuffers to minimize GC overhead |
| lwjgl3 | 4,852 | 11 months ago | Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL), audio (OpenAL) and parallel computing (OpenCL) applications |
| MapDB | Collections backed by off-heap or on-disk storage | ||
| mph-table | 97 | over 2 years ago | Minimal Perfect Hash Tables are an immutable key/value store with efficient space utilization and fast reads |
| mug | A small, zero-dep functional util library originating from Google | ||
| netty-buffers | Memory buffer pool implementation similar to jemalloc | ||
| ObjectLayout | A layout-optimized Java data structure package | ||
| ohc | 1,072 | about 1 year ago | Java large off heap cache developed for Apache Cassandra 3.0 |
| okio | 8,815 | 11 months ago | Modern Java IO library that do clever things to save CPU and memory |
| onyx-java | 5 | over 8 years ago | Mirrors the Onyx Platform core API by providing a Java equivalent for each component of an Onyx workflow |
| parquet | Columnar storage format that uses the record shredding and assembly algorithm described in the Dremel paper | ||
| PauselessHashMap | 151 | about 3 years ago | A java.util.HashMap compatible map that won't stall puts or gets when resizing |
| pcollections | 765 | over 1 year ago | A Persistent Java Collections Library |
| protobuf | Google's data interchange format | ||
| Quasar | Lightweight threads and actors for the JVM | ||
| rtree | 1,094 | 11 months ago | Immutable in-memory R-tree and R*-tree implementations in Java with reactive api |
| RTree2D | 132 | 11 months ago | RTree2D is a 2D immutable R-tree with STR (Sort-Tile-Recursive) packing for ultra-fast nearest and intersection queries on plane and spherical surfaces |
| Reactive Streams | Standard for asynchronous stream processing with non-blocking back pressure | ||
| Reactive Streams Utilities | 64 | over 6 years ago | Future standard utilities library for Reactive Streams |
| RoaringBitmap | 3,586 | 11 months ago | A better compressed bitset in Java |
| rollinghashjava | 75 | over 9 years ago | Rolling hash functions in Java |
| Reactor | Reactive data applications on the JVM for Java, Groovy, Clojure and other | ||
| RxJava | 47,954 | 11 months ago | Library for composing asynchronous and event-based programs using observable sequences |
| SmoothieMap | 296 | almost 6 years ago | java.util.Map impl with worst put latencies more than 100 times smaller than java.util.HashMap |
| Simple Binary Encoding | 3,136 | 11 months ago | High Performance Message Codec |
| splitmap | 19 | almost 7 years ago | A parallel bitmap implementation |
| DataSketches | A Java software library of stochastic streaming algorithms | ||
| stormpot | 360 | 11 months ago | A fast object pool for the JVM |
| stream-lib | 2,260 | almost 6 years ago | A Java library for summarizing data in streams for which it is infeasible to store all events |
| streamvbyte | 379 | 11 months ago | Fast integer compression in C using the StreamVByte codec |
| TraneIO | High-performance implementation of the Future abstraction | ||
| transducers-java | 120 | over 2 years ago | Composable algorithmic transformations independent from the context of their input and output sources |
| VarInt | 23,384 | 11 months ago | No-deps variable int implementation without deps (by Bazel) |
| vavr | Functional Library for Java 8+ | ||
| wire | 4,266 | 11 months ago | Clean, lightweight protocol buffers for Android and Java |
| Zero-Allocation-Hashing | 796 | 11 months ago | Hashing any sequences of bytes in Java, including all kinds of primitive arrays, buffers, CharSequences and more |
Awesome JVM / Metaprogramming | |||
| Antlr | Parser generator for reading, processing, executing, or translating structured text or binary files | ||
| auto | 10,441 | 11 months ago | A collection of source code generators for Java |
| Apache Calcite | Dynamic data management framework and SQL parser plugin | ||
| Checker Framework | Compiler plug-ins that find bugs or verify their absence | ||
| compile-testing | 701 | 11 months ago | Testing tools for javac and annotation processors |
| derive4j | 566 | almost 3 years ago | Algebraic data types constructors, pattern-matching, morphisms, optics and typeclasses |
| error-prone | 6,878 | 11 months ago | Catch common Java mistakes as compile-time errors |
| GHCVM | 2,612 | about 3 years ago | A Haskell to JVM compiler that supports GHC Haskell |
| Graal | New experimental just-in-time compiler for Java that is integrated with the HotSpot virtual machine | ||
| grappa | 63 | over 9 years ago | Java fork of Parboiled. Write grammars with no preprocessing phase |
| immutables | Generate simple, safe and consistent value objects | ||
| javacc | Parser generator for use with Java | ||
| javaparser | 5,479 | 11 months ago | Java 1.8 Parser and Abstract Syntax Tree for Java |
| JavaPoet | 10,836 | about 1 year ago | A Java API for generating .java source files |
| jparsec | 343 | over 3 years ago | Builds mini parsers in pure Java a la Haskell Parsec |
| JSweet | A transpiler from Java to TypeScript/JavaScript | ||
| MPS | Design and build extensible DSLs and editors | ||
| lombok | Reduce the amount of boilerplate code that is commonly written for Java classes | ||
| parboiled | 1,285 | 11 months ago | Parsing of arbitrary input text based on parsing expression grammars |
| Sulong | 627 | almost 7 years ago | LLVM IR interpreter written in Java using Truffle and Graal |
| TeaVM | 2,666 | 11 months ago | Ahead-of-time translating compiler (transpiler) from Java bytecode to JavaScript |
| Truffle | 20,486 | 11 months ago | Framework for implementing languages as simple interpreters |
| Xtext | Framework for development of programming languages and DSLs | ||
Awesome JVM / Native | |||
| hawtjni | 166 | over 2 years ago | A JNI code generator based on the JNI generator used in Eclipse SWT |
| Java Grinder | 496 | over 1 year ago | Compile Java bytecode to microcontroller assembly |
| j2v8 | 2,557 | about 3 years ago | Java API for Google's V8 JavaScript engine |
| JavaCPP | 4,519 | 11 months ago | JavaCPP provides efficient access to native C++ inside Java |
| jnr-ffi | 1,267 | about 1 year ago | Load native libraries without writing JNI code by hand |
| jssembly | 125 | over 8 years ago | Execution of native assembly from Java |
| NuProcess | 723 | 11 months ago | A low-overhead, non-blocking I/O, external Process execution implementation for Java |
| Project Panama | Enriching the connections between the JVM and APIs used by C programmers | ||
Awesome JVM / Network | |||
| Aeron | 7,466 | 11 months ago | Efficient reliable UDP unicast, UDP multicast, and IPC message transport |
| armeria | 4,837 | 11 months ago | Asynchronous RPC/API client/server library built on top of Java 8, Netty 4.1, HTTP/2, and Thrift |
| Chronicle-Network | 245 | about 2 years ago | A High Performance Network library |
| comcast | 10,322 | over 1 year ago | Simulating shitty network connections |
| gor | 18,700 | 12 months ago | HTTP traffic replay in real-time |
| gRPC | A high performance, open source, general RPC framework that puts mobile and HTTP/2 first | ||
| jRT | 48 | about 9 years ago | Measures response time of a java application to socket-based requests |
| JXIO | 79 | almost 9 years ago | Java API over AccelIO (C library), a high-performance asynchronous reliable messaging and RPC library optimized for hardware acceleration |
| K3PO | 48 | almost 3 years ago | Create arbitrary network traffic and behavior to certify whether a network endpoint behaves correctly |
| muxy | 822 | almost 5 years ago | Simulating real-world distributed system failures |
| Netty | Async event-driven network library for high performance protocol servers & clients | ||
| okhttp | 45,977 | 11 months ago | An HTTP+HTTP/2 client for Android and Java applications |
| one-nio | 665 | 11 months ago | library for building high performance Java servers |
| proteus-java | 42 | over 6 years ago | Proteus Java Client based on RSocket |
| reactive-grpc | 834 | over 1 year ago | Reactive gRPC is a suite of libraries for using gRPC with Reactive Streams programming libraries |
| RSocket | RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets, and Aeron | ||
| SimianArmy | 7,982 | almost 7 years ago | Resiliency tool that helps ensure that your applications can tolerate random instance failures |
| pcap4j | 1,174 | about 3 years ago | Java library for capturing, crafting, and sending packets using libpcap |
| pig | 462 | almost 5 years ago | A Linux packet crafting tool |
| tcpdump | Packet analyzer for network traffic capture | ||
| tcpflow | 1,702 | about 1 year ago | Captures TCP connections flows in a way that is convenient for protocol analysis and debugging |
| tcpreplay | 1,206 | over 1 year ago | Pcap editing and replay tools |
Awesome JVM / Nix tools | |||
| atoptool | Logging of system and process activity for long-term analysis, highlighting overloaded system | ||
| bcc | 20,724 | 11 months ago | Tools for BPF-based Linux IO analysis, networking, monitoring, and more |
| Flame Graphs | Visualization of profiled software, allowing the most frequent code-paths to be identified quickly and accurately | ||
| ioping | 953 | over 1 year ago | Simple disk I/0 latency measuring tool |
| javap | Disassembles class files into code that reflects the java bytecode | ||
| jhat | Java Heap Analysis Tool | ||
| jhsdb | Launch a postmortem debugger to analyze the content of a core-dump from a crashed JVM | ||
| jinfo | Prints configuration information for a given process | ||
| jstack | Prints stack traces of threads for a given Java process | ||
| jstat | Monitors GC and compiler statistics in the JVM | ||
| hwloc | Reports the structure of the processor, number of cores, hyperthreads and cache size | ||
| likwid | 1,695 | 11 months ago | Read hardware performance counters on Intel and AMD processors |
| numactl | Control NUMA policy for processes or shared memory | ||
| oprofile | System-wide hardware performance monitoring with easy-to-use interface at low overhead | ||
| perf | Linux profiling with performance counters | ||
| perf-tools | 9,935 | almost 2 years ago | Performance analysis tools based on Linux perf_events (aka perf) and ftrace |
| sysdig | Capture system state and activity from a running Linux instance, then save, filter and analyze | ||
| sysstat | Performance monitoring tools for Linux | ||
| taskset/process-affinity | Retrieve or set a processes’s CPU affinity | ||
| tiptop | Like top but also shows instructions per cycle (IPC) | ||
Awesome JVM / Profilers | |||
| allocation-instrumenter | 483 | almost 2 years ago | Java agent that rewrites bytecode to instrument allocation sites |
| aprof | 220 | almost 2 years ago | Java memory allocation profiler |
| async-profiler | 7,625 | 11 months ago | Sampling CPU profiler for Java featuring AsyncGetCallTrace + perf_events |
| BTrace | 5,836 | 11 months ago | a safe, dynamic tracing tool for the Java platform |
| Byteman | tracing, monitoring and testing tool for Java | ||
| bytestacks | 42 | over 1 year ago | Turn JVM bytecode execution into flame graphs |
| Chronon | Record your entire java program. Replay on any machine | ||
| GCeasy | Machine learning guided Garbage collection log analysis tool. Auto-detect problems in the JVM GC logs and recommend solutions to it | ||
| GCViewer | 4,488 | over 2 years ago | GCViewer is a tool that visualizes verbose GC output |
| grav | 293 | over 6 years ago | A collection of tools to help visualise process execution |
| hawkshaw | Tools for tracking down memory / JVM problems & generating predictable-as-possible VM behaviour | ||
| HdrHistogram | A Histogram that supports recording and analyzing sampled data value counts | ||
| hdrhistogram-metrics-reservoir | A Metrics Reservoir implementation backed by HdrHistogram | ||
| HdrLogProcessing | 30 | over 4 years ago | Utilities for HDR Histogram logs manipulation |
| heapster | 395 | over 9 years ago | Production heap profiling for the JVM |
| honest-profiler | 1,251 | almost 2 years ago | Sampling JVM profiler without the safepoint sample bias |
| jamm | 686 | almost 2 years ago | Measure actual object memory use including JVM overhead |
| Java Flight Recorder (JFR) | Tool for collecting diagnostic and profiling data about a running Java application with almost no performance overhead | ||
| java-sizeof | 120 | over 7 years ago | Memory consumption estimator for Java |
| jcstress | Experimental harness and tests to aid the research in the correctness of concurrency support in the JVM, class libraries, and hardware | ||
| jfr-flame-graph | 264 | about 2 years ago | Converting JFR Method Profiling Samples to FlameGraph compatible format |
| jfr-report-tool | 54 | over 7 years ago | Tool for creating reports from Java Flight Recorder dumps |
| jitwatch | 3,111 | about 1 year ago | Log analyser / visualiser for Java HotSpot JIT compiler |
| jitwatch-intellij | 169 | over 3 years ago | JITWatch plugin for IntelliJ IDEA |
| jHiccup | jHiccup is an open source tool designed to measure the pauses and stalls associated with an application’s underlying Java runtime platform | ||
| jmh | Micro benchmarks written in Java and other languages targetting the JVM | ||
| jmh-compare-gui | 70 | about 9 years ago | GUI for comparing JMH results |
| JOL | Analyze actual object layout schemes, footprint, and references in JVMs | ||
| JProfiler | Helps resolve performance bottlenecks, pin down memory leaks and understand threading issues | ||
| JVMTI | Provide a native API to inspect the state and to control the execution of applications running in the JVM | ||
| jvmtop | 1,229 | about 4 years ago | Lightweight console application to monitor running jvms on a machine in top-like manner |
| jvm-profiler | 1,785 | over 1 year ago | Java Agent to collect various metrics and stacktraces for Hadoop/Spark JVM processes in a distributed way |
| MAT | Java heap analyzer that help find memory leaks and reduce memory consumption | ||
| leakcanary | 29,471 | about 1 year ago | A memory leak detection library for Android and Java |
| metrics | Measure the behavior of critical components in production environment | ||
| micrometer | 4,504 | 11 months ago | An application metrics facade for the most popular monitoring tools |
| osquery | osquery is an instrumentation framework that expose the operating system as a high-performance relational database | ||
| Overseer | Low-Level Hardware Monitoring and Management for Java | ||
| OpenTracing | A vendor-neutral open standard for distributed tracing | ||
| perf-map-agent | 1,658 | about 5 years ago | Generate method mappings to use with the linux tool |
| perfj | 352 | over 6 years ago | Linux perf for java programs |
| polarbear | 21 | about 13 years ago | A tool to help diagnose OutOfMemoryError conditions |
| Riemann JVM Profiler | 292 | about 1 year ago | JVM agent which sends function-level profiler telemetry to a Riemann server for analysis, visualization, and storage |
| statsd-jvm-profiler | 330 | over 2 years ago | JVM agent profiler that sends profiling data to StatsD |
| Swiss Java Knife | 3,319 | almost 2 years ago | Small set of tools for JVM troublshooting, monitoring and profiling |
| Takipi | Tells you when and why code breaks in production | ||
| Tracer | 180 | about 2 years ago | Manages custom trace identifiers and carries them through distributed systems |
| YourKit | Fully featured, easy to use, low overhead profiler | ||
| Zipkin | 17,050 | 11 months ago | A distributed tracing system gather timing data for disparate services developed by Twitter |
Awesome JVM / Runtimes | |||
| Capsule | 1,150 | over 3 years ago | Dead-Simple Packaging and Deployment for JVM Apps |
| CRaSH | The shell for the Java Platform | ||
| Drip | 1,546 | almost 5 years ago | Fast JVM launching without the hassle of persistent JVMs |
| HotswapAgent | 2,376 | 11 months ago | Redefine classes at runtime and skip the redeploy process |
| jvmkill | 181 | over 2 years ago | Agent that forcibly terminates the JVM when it is unable to allocate memory or create a thread |
| Nailgun | Nailgun is a client, protocol, and server for running Java programs from the command line without incurring the JVM startup overhead | ||
Awesome JVM / Virtual Machines | |||
| Avian | 1,219 | over 4 years ago | Lightweight highly portable JVM with an option for AOT compilation |
| Dalvik | Android runtime (ART) is the managed runtime used by applications and some system services on Android | ||
| DCEVM | Modification of Java HotSwap VM with unlimited support for reloading classes at runtime | ||
| HotSpot | HotSpot virtual machine maintained and distributed by Oracle Corporation | ||
| IBM J9 | JVM developed by IBM | ||
| Eclipse OpenJ9 | 3,319 | 11 months ago | Eclipse OpenJ9 |
| J2ObjC | 5,998 | 11 months ago | Translator from Java source to Objective-C code. Keeps shared code between iOS native apps and Android native apps |
| jvm.go | 3,594 | almost 6 years ago | A JVM written in Go |
| ParparVM | 1,727 | 11 months ago | An Open Source Java bytecode to C translator for iOS native development. Designed as a part of the WORA for mobile project |
| MobiDevelop's RoboVM Fork | 970 | about 1 year ago | Ahead of time compiler for JVM bytecode targeting iOS, Mac OSX and Linux |
| Zing | The only JVM that eliminates Java garbage collection pauses for large heap sizes | ||
| Zulu | The only certified multi-platform build of OpenJDK: Free, 100% open source Java | ||
Resources / Documentation | |||
| TCP Tracepoints | Linux bcc/BPF using tcplife by Brendan Gregg | ||
| Linux tracing workshop | 1,284 | over 5 years ago | JVM monitoring with BPF, examples and hands-on labs for Linux tracing tools workshops |
| JVM Anatomy Park | mini-post series where every post goes deep for only a single topic by Aleksey Shipilёv | ||
| Coordinated Omission problem | Discussion on Mechanical Sympathy | ||
| False sharing | Threads impact the performance of each other while modifying independent variables sharing the same cache line. Martin Thompson | ||
| The JVM specification | The Java Virtual Machine Specification Java SE 8 Edition | ||
| The Java Memory Model | Starting point for discussions of and information concerning the Java Memory Model | ||
| The JSR-133 Cookbook for Compiler Writers | Unofficial guide to implementing the new Java Memory Model (JMM) specified by JSR-133 | ||
| Garbage Collection Tuning Guide | HotSpot Virtual Machine Garbage Collection Tuning Guide | ||
| Safepoints | Where is my safepoint? Nitsan Wakart | ||
| Topics in High-Performance Messaging | Design decisions, experience and constraints explained in high performance messaging systems | ||
| Top 10 Performance Mistakes | Digest of the top 10 performance related mistakes Martin Thompson has seen in production | ||
| The USE method | The Utilization Saturation and Errors (USE) Method is a methodology for analyzing the performance of any system. Brendan Gregg | ||
| An introduction to distributed systems | 9,085 | almost 3 years ago | Kyle Kingsbury (author of Jepsen) |
| Using JDK 9 Memory Order Modes | For expert programmers familiar with Java concurrency, but unfamiliar with the memory order modes available in JDK 9 provided by VarHandles | ||
| CPU Utilization is Wrong | Measure instructions per cycle (IPC) for CPU utilization. Brendan Gregg | ||
| Linux Load Averages: Solving the Mystery | Brendan Gregg | ||
| What every programmer should know about solid-state drives | Emmanuel Goossaert | ||
| Quick Tips for Fast Code on the JVM | Daniel Spiewak | ||
Resources / Communities | |||
| concurrency-interest | Discussion list for JSR-166 | ||
| hotspot-compiler-dev | Technical discussion about the development of the HotSpot bytecode compilers | ||
| hotspot-dev | HotSpot development mailing list | ||
| hotspot-gc-dev | Technical discussion about the development of the HotSpot garbage collectors | ||
| mechanical-sympathy | Discussing how to code sympathetically to and measure the underlying stack/platform so good performance can be extracted | ||
| Performance Java User's Group | For expert Java who want to push their systems to the next level | ||
| Virtual Machine Meetup 2017 | Venue for discussing the latest research and developments in the area of managed language execution | ||
Resources / Media | |||
| FOSDEM 2018 | FOSDEM 2018 Free Java devroom | ||
| JFokus 2018 | The GC edition. Shenandoah, ZGC, Zing, Fibers, Falcon etc | ||
| G1 Garbage Collector in Java 8/9 | Kirk Pepperdine | ||
| Extreme Profiling: Digging Into Hotspots | Nitsan Wakart | ||
| Java vs. C Performance | Cliff Click | ||
| Why JNI is slow? | Cliff Click | ||
| A Crash Course in Modern Hardware | Cliff Click | ||
| Java Profiling from the Ground Up | Nitsan Wakart | ||
| The Illusion of Execution | Nitsan Wakart | ||
| Mythbusting Modern Hardware to Gain 'Mechanical Sympathy' | Martin Thompson | ||
| Designing for Performance | Martin Thompson | ||
| How NOT to Measure Latency | Gil Tene | ||
| JVM Language Summit 2015 | JVM Language Summit 2015 | ||
| JVM Language Summit 2016 | JVM Language Summit 2016 | ||
| JVM Language Summit 2017 | JVM Language Summit 2017 | ||
| Bits of advice for VM writers | Cliff Click | ||
| Understanding Java garbage collection ... | Gil Tene | ||
| Faster Object Arrays | Gil Tene at GOTO Conferences | ||
| Java Memory Model Pragmatics | Aleksey Shipilev | ||
| With GC Solved, What Else Makes a JVM Pause? | John Cuthbertson | ||
| JVM Mechanics | Douglas Hawkins | ||
| Give me 15 minutes and I'll change your view of Linux tracing | Brendan Gregg | ||
| Kernel Recipes 2017: Performance Analysis with BPF | Brendan Gregg | ||
| Shenandoah deep talk | Aleksey Shipilëv slightly-deeper-than-usual Shenandoah talk from Virtual Machine Meetup 2017 | ||
| Shenandoah: The Garbage Collector That Could | Aleksey Shipilev - Devoxx 2017/11 | ||
| Analyzing and Debugging the Java HotSpot VM at the OS Level | Volker Simonis | ||
| Cliff Click podcast 2017/09/16 | Programming and Performance Intro | ||
| Cliff Click podcast 2017/09/16 | Bugs and Coding Styles | ||
| Cliff Click podcast 2017/09/18 | Java vs C/C++ | ||
| Cliff Click podcast 2017/09/21 | Debugging Data Races | ||
| Cliff Click podcast 2017/09/24 | Fast Bytecodes for Funny Languages | ||
| Cliff Click podcast 2017/09/28 | Struct of Arrays vs Array of Structs | ||
| Cliff Click podcast 2017/10/04 | The 3 Hardest Problems in Programming | ||
| Cliff Click podcast 2017/11/05 | Modern Hardware Performance and Cache Lines | ||
| Cliff Click podcast 2017/11/09 | Queuing In Practice | ||
| Which technique do programming language parsers and interpreters use? | Cliff Click | ||
| Everything about Stack Traces and Heap Dumps | Andrei Pangin | ||
| Fast and safe production monitoring of JVM with BPF tools | Sasha Goldshtein | ||
| The Future of the Linux Page Cache | Matthew Wilcox | ||
Resources / People | |||
| Aleksey Shipilëv | Developing Oracle/Open JDK/Hotspot and other Java-related technologies | ||
| Andrey Breslav | Lead Language Designer of Kotlin @ JetBrains | ||
| Brian Goetz | Java Language Architect at Oracle | ||
| Ben Christensen | Facebook, Netflix, Apple engineering | ||
| Brendan Gregg | Cloud performance, kernel engineer, speaker, author | ||
| Charles Nutter | JRuby guy | ||
| Claes Redestad | Working with OpenJDK stuff @ Oracle | ||
| Cliff Click | Creator of the HotSpot Server Compiler | ||
| Dave Dice | Senior research scientist in the Scalable Synchronization Research Group within Oracle | ||
| Dávid Karnok | RxJava committer that blogs about advanced RxJava | ||
| Doug Lea | Author of the Java memory model | ||
| Gil Tene | Azul Systems | ||
| Heinz Kabutz | Author of 250+ Java Specialists' Newsletters | ||
| Ivan Krylov | JVM expert | ||
| Jake Wharton | Square, Google, open source hacker | ||
| John Rose | HotSpot developer | ||
| Jonas Bonér | Founder & CTO of Lightbend | ||
| Lukas Eder | Blogger. Author of JOOQ | ||
| Marcus Lagergren | Java language team alumnus | ||
| Mark Reinhold | Chief Architect, Java Platform Group, Oracle | ||
| Martin Thompson | Pasty faced performance gangster | ||
| Martijn Verburg | Java Champion | ||
| Kirk Pepperdine | Working in high performance and distributed computing for nearly 20 years | ||
| Nitsan Wakart | Azul Systems | ||
| Norman Maurer | Netty developer | ||
| Paul Phillips | Forever undisputed SLOC Scala compiler dev | ||
| Per Liden | Hacking on the HotSpot JVM at Oracle | ||
| Peter Lawrey | Innovative developer of high performance Java systems for competitive advantage | ||
| Rafael Winterhalter | Author of ByteBuddy | ||
| Richard Warburton | Developer, Speaker, Author | ||
| Richard Startin | Performance Analyst, developer, blogger | ||
| Ron Pressler | Parallel Universe. Leading Fibers and Continuations for the JVM | ||
| Stephen Colebourne | Java Champion. Occasional blogger and speaker. Best known for Joda projects and JSR-310 | ||
| Todd L. Montgomery | Ex-CTO, Ex-NASA researcher, network geek, messaging middleware designer | ||
| Stéphane Maldini | Project Reactor Lead @Pivotal | ||
| Stuart Marks | Doctor Deprecator. Java/JDK/OpenJDK developer | ||
| Vladimir Ivanov | hacking HotSpot JVM @ Oracle | ||
| Viktor Klang | Deputy CTO at Typesafe Inc | ||