Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
ClientProxyMembershipID.canonicalReference ends up allocating a large number of objects that get garbage collected. The cause of this is that when it goes to do a lookup on the ConcurrentHashMap to see if a canonical id exists, it calls ClientProxyMembershipID.hashCode which in turn calls isDurable(). This method calls getDistributedMember which does a deserialization of the identity byte array which does lots of object allocations.
I think we can instead check for a ClientProxyMembershipID whose uniqueId and identity are equal. If we find one then we can use it as the canonical id.