# allocation-instrumenter
**Repository Path**: mirrors_google/allocation-instrumenter
## Basic Information
- **Project Name**: allocation-instrumenter
- **Description**: A Java agent that rewrites bytecode to instrument allocation sites
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-08
- **Last Updated**: 2026-02-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
The Allocation Instrumenter is a Java agent written using the [java.lang.instrument][] API and
[ASM][]. Each allocation in your Java program is instrumented; a user-defined callback is invoked
on each allocation.
## How to get it
The [latest release][] is available from [Maven Central][] as:
```xml
com.google.code.java-allocation-instrumenter
java-allocation-instrumenter
3.3.4
```
## Basic usage
In order to write your own allocation tracking code, you have to implement the `Sampler` interface
and pass an instance of that to `AllocationRecorder.addSampler()`:
```java
AllocationRecorder.addSampler(new Sampler() {
public void sampleAllocation(int count, String desc, Object newObj, long size) {
System.out.println("I just allocated the object " + newObj +
" of type " + desc + " whose size is " + size);
if (count != -1) { System.out.println("It's an array of size " + count); }
}
});
```
You can also use the allocation instrumenter to instrument constructors of particular classes.
You do this by instantiating a `ConstructorCallback` and passing it to
`ConstructorInstrumenter.instrumentClass()`:
```java
try {
ConstructorInstrumenter.instrumentClass(
Thread.class, new ConstructorCallback() {
@Override public void sample(Thread t) {
System.out.println("Instantiating a thread");
}
});
} catch (UnmodifiableClassException e) {
System.out.println("Class cannot be modified");
}
```
For more information on how to get or use the allocation instrumenter, see [Getting Started][].
[java.lang.instrument]: http://java.sun.com/javase/6/docs/api/java/lang/instrument/package-summary.html
[ASM]: http://asm.ow2.org/
[latest release]: https://github.com/google/allocation-instrumenter/releases/tag/java-allocation-instrumenter-3.3.4
[Maven Central]: http://search.maven.org/#artifactdetails%7Ccom.google.code.java-allocation-instrumenter%7Cjava-allocation-instrumenter%7C3.3.4%7Cjar
[Getting Started]: https://github.com/google/allocation-instrumenter/wiki