当前位置:编程学习 > JAVA >>

求教报错OutOfMemoryError


String getData()
{
    byte[] b=new byte[in.available()];//b的字节总数是13621601
    in.read(b);
    Charset cset=Charset.forName("GBK");
    ByteBuffer bbuf=ByteBuffer.wrap(b);
    CharBuffer cbuf=cset.decode(bbuf);
    return cbuf.toString(); //到这句报错java.lang.OutOfMemoryError
}

请问这是什么原因造成的?我应该怎样解决? --------------------编程问答--------------------  具体原因不太清楚但使用下面的方法可以:
 str = new String(b,"GBK");
 return str; --------------------编程问答-------------------- 内存溢出。。。
因为b的字节总数是13621601,太大了,超过了你设置的java虚拟机的内存。 --------------------编程问答--------------------
引用 2 楼 afunx 的回复:
内存溢出。。。
因为b的字节总数是13621601,太大了,超过了你设置的java虚拟机的内存。

请问如果不考虑设置虚拟机的内存,还有什么方法来处理这种大文件吗? --------------------编程问答-------------------- 我用char[]可以全部读进来,但是String s = new String(char[]);得到的却是NULL --------------------编程问答--------------------
引用 1 楼 happysmhzp 的回复:
 具体原因不太清楚但使用下面的方法可以:
 str = new String(b,"GBK");
 return str;

谢谢,我明天试一下:)
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,