This is a living list of tools for program debloating and software specialization.
Java
Slicer4J an accurate, low-overhead dynamic slicer for Java programs (paper).
BloatLibD detects offuscated third-party libraries that are bloated using a Jar2vect model (paper).
JDBL automatically removes unnecessary code from Java applications through dynamic analysis (paper).
DepClean automatically detects and removes unused dependencies in Maven projects (paper).
JReduce is a tool for reducing Java class files and jar files. (paper).
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.
Piranha is a tool for refactoring code related to feature flag APIs (paper).
JShrink is a Java shrinker and obfuscator.
Docker
docker-slim a tool to minify and secure docker containers.
JavaSlicer is an open-source dynamic slicing tool developed at Saarland University.
C/C++
RAZOR is a framework for post-deployment software debloating (paper).
Nibbler is a tatic analysis tool to automatically find functions in the program and its shared library functions that are not used by the program. (paper).
JavaScript
UFFRemover is a slimming JavaScript tool for identifying and removing unused foreign functions (UFF) (paper).
R8 is the Google substitute of Proguard.
JShrink is a Javascript minifier built in PHP.
Related tools
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