This is a living list of tools for program debloating and software specialization.
jlink is a tool to assemble and optimize a set of Java modules and their dependencies into a custom runtime image.
Proguard is a shrinker, optimizer and obfuscator of Java bytecode.
JShrink is a Java shrinker and obfuscator.
docker-slim a tool to minify and secure docker containers.
JavaSlicer is an open-source dynamic slicing tool developed at Saarland University.
R8 is the Google substitute of Proguard.
bpftrace High-level tracing language for Linux eBPF.
STrace A diagnostic, debugging and instructional userspace utility for Linux.
JDCallgraph Dynamic call graph generation for Java.
constant-pool-scanner Simple utility to scan Java bytecode for class references in the constant pool.
java-callgraph Programs for producing static and dynamic (runtime) call graphs for Java programs.
jvm-callgraph Call graph generator for JVM bytecode.
jvm-tools Small set of tools for JVM troublshooting, monitoring and profiling.
bytecode-examples Java Bytecode Engineering Examples & Tutorials.
maven-lifecycle-logger Logger to record maven lifecycle events and timing.
dex-method-counts Command-line tool to count per-package methods in Android .dex files.
DTrace A comprehensive dynamic tracing framework