dreis2211 / remove-introspector-customizer-agent

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Summary

This project serves a little Java agent that removes the support for looking up Bean Customizers inside java.beans.Introspector. It does so by essentially making the internal findCustomizerClass method a no-op and returning null.

This is inspired by the findings in Spring-Framework:

Where it was revealed that a reasonable amount of time is spent in Introspector. Especially on finding Customizer classes that 99% of Spring applications don't have.

CPU profile

Allocation profile

Usage

NOTE: This agent is not meant to run in production usages and I don't claim this is safe to use and only do so at your own risk.

Before using the agent, you need to build the agent and put it somewhere where you need it:

./gradlew build

Depending on your use-case you might need to put this in place then:

Plain Java

java -javaagent:/path/to/the/agent/remove-introspector-customizer-agent.jar ...

Maven Surefire Tests

E.g. in Maven Surefire tests

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<configuration>
		<argLine>-javaagent:/path/to/the/agent/remove-introspector-customizer-agent.jar</argLine>
	</configuration>
</plugin>

Gradle Tests

Or for Gradle tests

test {
    jvmArgs '-javaagent:/path/to/the/agent/remove-introspector-customizer-agent.jar'
}

Happy experimenting with measuring eventual impacts.

About

License:Apache License 2.0


Languages

Language:Java 100.0%