我最近发现java.lang.String.substring方法不返回一个新字符串,而是返回一个包含原始字符串的视图.这可能会对记忆产生影响.例如,如果您正在读取ascii文件,并使用子字符串解析文件中的标记并将子字符串的结果存储在内存中 - 您实际存储在内存中的是子字符串操作之前的整个字符串!您当然可以通过在自己的版本中包装子字符串来解决此问题,该子字符串返回子字符串结果的新字符串.
Jon*_*eet 11
我曾被它咬过一次,逐行读取字典文件.每行都很短,但是创建的缓冲区BufferedReader意味着每个字符串都由80-char数组支持.
那是我第一次学习写作的时候:
word = new String(word);
Run Code Online (Sandbox Code Playgroud)
大多数时候它不是问题 - 当然它可以比"采取完全独立的复制"方法更有效.