在浏览Java 7 API文档时,我偶然发现了新类java.lang.ClassValue,其中包含以下相当少的文档:
懒惰地将计算值与(可能)每种类型相关联.例如,如果动态语言需要为消息发送调用站点遇到的每个类构造消息调度表,则它可以使用a
ClassValue来缓存执行消息快速发送所需的信息,以便遇到每个类.
任何人都可以更好地解释这个类解决了什么问题,也许还有一些示例代码或已经使用过该类的开源项目?
更新:我仍然对使用这个新类的一些实际源代码或示例感兴趣.
我还在mlvm-dev邮件列表上找到了关于一些实现改进的邮件.显然,从使用WeakHashMap变为java.lang.Class上的新私有字段,使其更具可伸缩性.
Sco*_*rey 11
对这个类的目的的最好解释是它解决了Java Bug 6389107
有许多用例Map<Class<?>, T>由于某种原因人们想要基本上有一个,但这会导致各种麻烦,因为Class在Map之前,对象将不能用GC. WeakHashMap<Class<?>, T>并不是因为非常频繁地T引用了这个类.
上面的错误进入更详细的解释,并包含面临此问题的示例项目/代码.
ClassValue就是这个问题的答案.一种线程安全的类加载器加载/卸载安全方式,用于将数据与类关联.
| 归档时间: |
|
| 查看次数: |
2890 次 |
| 最近记录: |