It turns out that C2 jvm compiler has a limit on the number of fields a method can take.
It turns out that C2 jvm compiler has a limit on the number of fields a method can take. The limit is between 66 and 69.
When a method M takes more fields than the limit, then C2 compiler refuses to compile the method and marks the method as not compilable at all tiers. This makes every subsequently compiled call to M a call into the interpreter causing hotspots and high CPU times/throttling.