4
|
Brad Mace Mike King · 技术社区 · 14 年前 |
![]() |
1
7
不要在代码中使用String.intern()。如果你可以得到20个或更多不同的字符串,至少不会。根据我的经验
避免重复
使用该代码,您可以避免一个CSV文件的重复字符串。如果你需要在更大范围内避免它们,请致电
|
![]() |
2
20
一种选择
Guava
给你的是用
Interner
|
![]() |
3
2
这个信息可能已经过时了,我已经没有代码来支持它了。。。 (没有过时的东西):
(可能过时的内容): 我写了一个程序,我想快速,使用尽可能少的内存。每次从文件中读取字符串时,我都尝试过带实习生和不带实习生。实习的方式明显比不用实习生的时间长,以至于我决定不做实习生。如果性能很重要,请尝试在有/没有实习生的情况下计时代码。您可能还想在有/没有intern的情况下检查内存使用情况(profiler会很好地解决这个问题),看看折衷是否对您有影响。 |
![]() |
4
1
这让我相信,你从文件中得到的字符串,在你的程序编译后,不会被自动执行。 如果你说什么,
这将被编译器截取,因为它在编译时是可见的。 如果知道某些字符串在输入文件中非常常见,可以调用
这个字符串将被添加到实习生池中供以后使用。甚至可以通过在代码的主部分或静态部分调用intern来预缓存它们。 您可以尝试对您的特定输入进行实验,看看在最佳情况下,如果您手动实习一些数据,并将其与默认的无实习行为进行比较,会发生什么。 |
![]() |
5
1
据我所知,string interning只对string文本自动执行,所有其他文本都必须使用{@link java.lang.string#intern()}方法进行编程。因此,通过其构造函数使用已实习的字符串文本构造字符串会生成一个新字符串,该字符串不是实习的,但包含与构造它的实习文本相同的内容。 |
![]() |
6
1
See String#intern description in the API .
编辑
|
![]() |
7
1
例如。。。批处理代码。您计划处理1亿行,创建的许多pojo都有一个字段(比如person对象上的一个CITY字段),该字段只是少数可能的答案之一(纽约、芝加哥等)。做一个枚举有太多的选择,但是你真的不需要创建4500万个字符串,比如纽约。您可以使用interning或某种home-rolled变体(弱引用映射可能比String.intern更好)来减少内存占用。 你可以节省内存空间的代价是可能的CPU工作。。。在某些地方是值得的,但很难说。GC很快,重复的字符串一使用完就会得到gcd。 所以如果你在一个地方遇到内存墙,并且有一个基数很低的字符串。。。你可以考虑实习。 |
![]() |
8
1
我想,在
桌子的尺寸应该是最好的!
用大一点的桌子
|
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Manan Girdhar · 拆分字符串并仅在java中使用第二部分 2 年前 |
![]() |
AnxiousLuna · Python使用len()获取数组索引数 2 年前 |
![]() |
antonoyaro8 · 数据帧中每列上的Grepl 2 年前 |