[
https://issues.apache.org/jira/browse/THRIFT-594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12761291#action_12761291
]
Bryan Duxbury commented on THRIFT-594:
--------------------------------------
@David: using a separate object as the intern table makes things a little
complicated, because then you need to pass that object around. I think the best
thing to do would be to use a WeakReference-based map for the intern table so
that as soon as nothing references it, the object can be garbage collected.
@Esteve: I think an allocator scheme would be more complicated than just having
an intern method. If we wanted to have allocators that could have this
behavior, I would think they'd just call the intern method, anyway.
> Add "intern" method to generated structs
> ----------------------------------------
>
> Key: THRIFT-594
> URL: https://issues.apache.org/jira/browse/THRIFT-594
> Project: Thrift
> Issue Type: New Feature
> Components: Compiler (Java), Library (Java)
> Affects Versions: 0.2
> Reporter: Bryan Duxbury
> Priority: Minor
> Fix For: 0.2
>
>
> Thrift structs can take up a lot of memory in Java. In my particular
> application, many of the structs I load have common subcomponents. When
> deserializing these structs today, each copy of the common subcomponents
> takes up a fresh chunk of memory.
> To reduce this memory usage, I propose that we add an "intern" method to
> Thrift structs. This method would maintain a static class-level cache of
> canonical versions of instances of objects. When calling "intern", if the
> object was not in the cache, it would add it and return the same struct. If
> it was in the cache, it would return the canonical version, allowing the
> non-canonical version to be dropped during garbage collection.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.