Tom*_*m N 24 java string permgen string-interning
我已经看到很多原始的例子描述了String intern()的工作方式,但我还没有看到一个可以从中受益的真实用例.
我能想到的唯一情况是拥有一个接收大量请求的Web服务,由于僵化的架构,每个请求都非常相似.通过intern()在这种情况下使用请求字段名称,可以显着减少内存消耗.
任何人都可以提供在生产环境中使用intern()并取得巨大成功的示例吗?也许是一个流行的开源产品中的一个例子?
编辑:我指的是手动实习,而不是字符串文字的保证实习等.
pol*_*nts 21
如果你有实习是非常有利的N,可以采取只字符串K,不同的价值,N远远超过K.现在,不是将N字符串存储在内存中,而是存储起来K.
例如,您可能有一个ID由5位数组成的类型.因此,只能有10^5不同的值.假设您现在正在解析一个包含许多引用/交叉引用ID值的大型文档.假设这个文件10^9总共有参考文献(显然在文件的其他部分重复了一些参考文献).
所以N = 10^9和K = 10^5在这种情况下.如果你没有实习字符串,你将把10^9字符串存储在内存中,其中有很多字符串equals(通过Pigeonhole Principle).如果您在解析文档时得到intern()的ID字符串,并且您没有保留对从文档中读取的未处理字符串的任何引用(因此它们可以被垃圾收集),那么您将永远不需要存储多个10^5字符串在记忆中.
| 归档时间: |
|
| 查看次数: |
2940 次 |
| 最近记录: |