OpenTelemetry auto-instrumentation and instrumentation libraries for Java
Go to file
dougqh fb871611b5 Replacing ID generation with WeakReference reuse
First pass at replacing ID generation with WeakReference reuse

In this first version, the Cache<ClassLoader, ID> was replaced with Cache<ClassLoader, WeakReference<ClassLoader>>.

The core cache is still of Cache<TypeCacheKey, TypePool.Resolution> and TypeCacheKey logically remains a composite key of ClassLoader, class name.

The removal of ID assignment means ID exhaustion is no longer na issue, so there's never a need to rebuild the cache.  For that reason, CacheInstance has removed and the core caching logic has been moved into DDCachingPoolStrategy.

While TypeCacheKey remains conceptually the same, the internals have changed somewhat.  The TypeCacheKey now has 3 core fields...
- loaderHash
- loadeRef
- class name

Since loader refs are recycled, the fast path for key equivalence can use reference equivalence of the reference objects.

This change ripples through the CacheProvider-s which also have to store loaderHash and loaderRef.

It may be worth going a step further and switching to a Cache<Loader, TypePool> as well.  That still avoid the creation of many WeakReference-s, since the underlying CacheProvider will hold a canonical WeakReference per ClassLoader.
2020-01-27 12:03:44 -05:00
.circleci Fix CircleCI muzzle build running out of memory 2019-11-27 12:37:43 -08:00
.github Fix log message and add ignores 2019-05-24 11:44:10 -07:00
buildSrc Update muzzle maven URL to use https 2020-01-15 11:22:10 -08:00
dd-java-agent Replacing ID generation with WeakReference reuse 2020-01-27 12:03:44 -05:00
dd-smoke-tests Upgradle to gradle 6.0 2019-11-12 16:26:46 -05:00
dd-trace-api Check for both regular and lowercase names with decorator enabled flags. 2020-01-17 11:05:44 -08:00
dd-trace-ot Check for both regular and lowercase names with decorator enabled flags. 2020-01-17 11:05:44 -08:00
gradle Update bytebuddy to 1.10.6 2020-01-15 10:40:46 -05:00
tooling Copy over dd_jvm_stats.sh from #939 2019-08-20 12:27:36 -07:00
utils Avoid loading `Config` in `DDSpecification` 2019-10-10 12:56:53 -04:00
.editorconfig Apply and enforce google checkstyle and formatting 2017-07-12 07:47:19 -07:00
.gitignore Add crash dumps to gitignore 2019-06-24 12:57:08 -04:00
.gitmodules Use git submodules to load metrics.yaml files 2019-01-08 10:13:18 -08:00
CONTRIBUTING.md Apply suggestions from CR #827 2019-05-17 10:15:03 +02:00
LICENSE Create LICENSE 2017-07-13 11:10:37 -04:00
LICENSE-3rdparty.csv simple load generator tool 2019-11-07 16:50:23 -05:00
NOTICE Create NOTICE 2017-07-13 10:16:04 -04:00
README.md Remove documentation from readme and point to official docs 2018-01-31 16:31:25 -08:00
dd-trace-java.gradle Begin 0.42.0 2020-01-14 11:11:06 -08:00
gradle.properties Try doubling the metaspace size to fix check task. 2019-01-04 13:43:40 -08:00
gradlew Upgradle to gradle 6.0 2019-11-12 16:26:46 -05:00
gradlew.bat Update gradle to 5.5.1 2019-07-12 10:07:08 -04:00
settings.gradle [rmi] Instrumentation for RMI 1.2 and later 2019-12-19 17:20:50 +01:00

README.md

Datadog Java APM

To use and configure Datadog Java APM, see https://docs.datadoghq.com/tracing/languages/java