This document discusses techniques for reloading Java classes at runtime, known as hot reloading or hot swapping. It begins with an introduction and overview of class loaders, Java agents, and instrumentation which can be used to dynamically modify classes. Specific techniques are then presented for reloading classes, fields, methods and code using custom class loaders and bytecode manipulation. The goal is to allow reloading parts of an application without restarting the Java Virtual Machine.