Java : Is String. 替换 GC 开销太大?

标签 java string garbage-collection

给定代码:

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

这会产生很多独特的字符串,最终 gc 必须清理这些字符串。而且,在此处输入代码对每个字符串执行 replaceAll 将创建更多独特的字符串(两次?)。

这 (replaceAll) 是否是小型应用程序的 GC 的重大开销?

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

最佳答案

这些字符串是临时字符串,在下一次迭代中不会再被引用,所以我希望它们能很快被垃圾回收。除非基准测试表明循环是性能瓶颈,否则不要太担心它并关注功能的正确性。

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

关于Java : Is String. 替换 GC 开销太大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42971051/

相关文章:

java - 为什么要分割为内部项目的 maven-modules?

java - 将 ArrayList 作为参数从类传递给 StoredProcedure

java - 如何减少 Full GC 的数量?

java - Hibernate 的 setFirstResult() 问题与 Oracle jdbc 驱动程序

python - 在 python 中使用多行和单行字符串文字有什么好处?

c++ - 字符串到唯一指针数组

mysql - 如何从MySQL字符串中删除所有非字母数字字符?

.net - GC.COllect() 似乎在 Debug模式下不起作用

java - 第四个符合GC条件的对象是在哪里创建的?

java - JCheckbox 未正确删除