鉴于代码:
long i=0;
while(i++<MILLIONS){
String justHex = UUID.randomUUID().toString().replaceAll("-","");
System.out.println(justHex);
}
这将产生许多独特的字符串,gc必须最终清理。并且,enter code here
在每个字符串上执行replaceAll会创建更多唯一字符串(两次?)。
这个(replaceAll)对于小型应用程序来说是否是GC的显着开销?
程序员是否应该担心这些事情?
答案 0 :(得分:1)
字符串是临时字符串,在下一次迭代中不再被引用,所以我希望它们能够快速被垃圾收集。除非基准测试表明循环是一个性能瓶颈,否则不要过于担心并专注于功能正确性。
对内存使用和性能的更大影响将是您使用replaceAll
,它需要正则表达式作为第一个参数。如果您不需要正则表达式,最好使用replace
,它也会替换所有出现次数,但不会有正则表达式开销。