Java:String.replace GC开销太多了吗?

时间:2017-03-23 08:46:05

标签: java string garbage-collection

鉴于代码:

long i=0;
while(i++<MILLIONS){
    String justHex = UUID.randomUUID().toString().replaceAll("-","");
    System.out.println(justHex);
}

这将产生许多独特的字符串,gc必须最终清理。并且,enter code here在每个字符串上执行replaceAll会创建更多唯一字符串(两次?)。

这个(replaceAll)对于小型应用程序来说是否是GC的显着开销?

程序员是否应该担心这些事情?

1 个答案:

答案 0 :(得分:1)

字符串是临时字符串,在下一次迭代中不再被引用,所以我希望它们能够快速被垃圾收集。除非基准测试表明循环是一个性能瓶颈,否则不要过于担心并专注于功能正确性。

对内存使用和性能的更大影响将是您使用replaceAll,它需要正则表达式作为第一个参数。如果您不需要正则表达式,最好使用replace,它也会替换所有出现次数,但不会有正则表达式开销。