Class AllocationInstrumenter

  • All Implemented Interfaces:
    ClassFileTransformer

    public class AllocationInstrumenter
    extends Object
    implements ClassFileTransformer
    Instruments bytecodes that allocate heap memory to call a recording hook. This will add a static invocation to a recorder function to any bytecode that looks like it will be allocating heap memory allowing users to implement heap profiling schemes.
    • Method Detail

      • instrument

        public static byte[] instrument​(byte[] originalBytes,
                                        String recorderClass,
                                        String recorderMethod,
                                        ClassLoader loader)
        Given the bytes representing a class, go through all the bytecode in it and instrument any occurrences of new/newarray/anewarray/multianewarray with pre- and post-allocation hooks. Even more fun, intercept calls to the reflection API's Array.newInstance() and instrument those too.
        Parameters:
        originalBytes - the original byte[] code.
        recorderClass - the String internal name of the class containing the recorder method to run.
        recorderMethod - the String name of the recorder method to run.
        loader - the ClassLoader for this class.
        Returns:
        the instrumented byte[] code.