SIGN IN SIGN UP

Protocol Buffers - Google's data interchange format

0 0 3 C++

Ruby <2.7now uses WeakMap too, which prevents memory leaks.

Ruby <2.7 does not allow non-finalizable objects to be WeakMap
keys: https://bugs.ruby-lang.org/issues/16035

We work around this by using a secondary map for Ruby <2.7 which
maps the non-finalizable integer to a distinct object.

For now we accept that the entries in the secondary map wil never
be collected.  If this becomes a problem we can perform a GC pass
every so often that looks at the contents of the object cache to
decide what can be deleted from the secondary map.
J
Joshua Haberman committed
9879f423ff9f2af8e85ce2f64ef7dc5fe6779c28
Parent: d7e943b