While doing some investigations on #16021 we discovered that the ResolvableType internal cache was holding a lot of duplicates for simple types (i.e. String, Integer, etc).
It turns out that we are using too much metadata to compute the key when the class has no generic information. so setFoo(String foo) and setBar(String bar) would result in two entries in the cache because the TypeProvider is different.
Affects: 4.0.7, 4.1 GA
#16021 memory leak in class org.springframework.core.ResolvableType
Investigating this a bit further, the cost of creating a simple wrapper around the class is lower than checking the cache so we're now avoiding the cache altogether for simple types (i.e. non generic, simple types).