Java 如何克隆()StringBuilder
有没有办法克隆StringBuilder?我按位读取文件,然后将这些位转换为ASCII字符,然后将字符收集到字符串生成器中,例如,当我有8个字符时,我将字符串生成器对象放入数组列表中。然后我清洗它,然后再做同样的事情。然而,由于内存问题,我无法创建新的字符串生成器,也无法更改该字符串生成器,因为在数组列表中,该生成器也会更改 所以我想我必须克隆这个字符串生成器并将其放入数组列表中。只有一个问题字符串生成器没有克隆()。那么我的选择是什么 考虑到性能和记忆,也许有人能给出一些想法,什么是做这件事的好方法 ArrayList characters=新的ArrayList(); int计数器=0Java 如何克隆()StringBuilder,java,memory,netbeans,arraylist,stringbuilder,Java,Memory,Netbeans,Arraylist,Stringbuilder,有没有办法克隆StringBuilder?我按位读取文件,然后将这些位转换为ASCII字符,然后将字符收集到字符串生成器中,例如,当我有8个字符时,我将字符串生成器对象放入数组列表中。然后我清洗它,然后再做同样的事情。然而,由于内存问题,我无法创建新的字符串生成器,也无法更改该字符串生成器,因为在数组列表中,该生成器也会更改 所以我想我必须克隆这个字符串生成器并将其放入数组列表中。只有一个问题字符串生成器没有克隆()。那么我的选择是什么 考虑到性能和记忆,也许有人能给出一些想法,什么是做这件事的
StringBuilder sb = new StringBuilder(blockSize-1);
while (mbb.hasRemaining()) {
char charAscii = (char)mbb.get();
counter++;
charCounter++;
if (counter == blockSize){
sb.append(charAscii);
characters.add(sb);//sb.toString()
sb.delete(0, sb.length());
counter = 0;
}else{
sb.append(charAscii);
}
if(!mbb.hasRemaining()){
characters.add(sb);
}
}
fc.close();
return characters;
如果没有内存创建新的
StringBuilder
,则没有内存创建新的StringBuilder
,克隆也不会改变这一点。复制StringBuilder
的唯一真正方法是新建StringBuilder(myBuilder)
,或类似的方法
如果要从MemoryException中获取
OutOfMemoryException
,则需要获取更多内存,或者找到其他方法来减少内存消耗。您可以通过以下方法清除StringBuilder
对象:
一,
二,
就表现而言,1。这是更好的选择。但无论如何你都不能克隆它。有关克隆的更多信息,请参阅
新建StringBuilder(oldbuilder.toString())
是复制StringBuilder的最简单方法。您还没有实际解释您要实现的目标,因此您可能只需要存储StringBuilder中的字符串即可。Yap知道这不会有任何帮助。所以我没有选择,因为这个字符;给出java OutOfMemory异常注意,这个OutOfMemoryException并不意味着机器内存不足,它意味着JVM已经达到了极限。它可能是机器限制或JVM限制。我建议通过传入例如-Xmx1024
来确保告诉Java使用足够的内存
sb.delete(0, sb.length())
sb = null;
sb = new StringBuilder();