代码如下 private String getURLInfo(HttpURLConnection urlConn) {
BufferedReader in = null;
StringBuffer source = new StringBuffer();
String inputLine; try {
in = new BufferedReader(new InputStreamReader(urlConn
.getInputStream())); while ((inputLine = in.readLine()) != null) {
source.append(inputLine);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return source.toString();
}
我前面调用了一个循环 根据页数循环获得每一页的Connection 然后调用这个方法输出
但是循环到300次左右的时候 就会OutOfMemory
请问要怎么解决啊 困扰了好久了
原来用String做拼接不行 现在换了StringBuffer也不行啊

解决方案 »

  1.   

    你一页能有这么多数据?你不是把所有页数都放进这个stringbuffer里了吧?你应该是一页执行一次啊,就算你要这样,不管是string还是stringbuffer长度都是有限制的,你可以尝试分割下,比如循环200次就重新生成一个string或stringbuffer,最后再放进一个数组或集合里
      

  2.   

    是一页就执行一次啊 每得到一页后 会调用此getURLInfo(conn)
    而且在那个方法里面 也是每次都新生成的StringBuffer对象啊
    另 出现的OutOfMemory的标志是:  java heap space
    还有 我是用Tomcat开发 JBoss跑项目
    请问要是需要改什么-Xms128m -Xmx512m之类的 要添在哪里?
      

  3.   

    jboss改什么-Xms128m -Xmx512m之类的在 
    bin/run.bat搜索JAVA_OPTS关键字. 
      

  4.   

    String拼接也出问题?不会吧 StringBuffer内存可能会溢出 但String应该不会啊Tomcat的改法是:进入bin目录 选择tomcat5w.exe(反正点完出界面的就是了) 然后选项卡选Java