调用ajax,返回json,
报异常
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:572)
at java.lang.StringBuilder.append(StringBuilder.java:203)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:502)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:318)
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.array(JSONWriter.java:409)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:151)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.array(JSONWriter.java:409)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:151)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)
at com.googlecode.jsonplugin.JSONWriter.bean(JSONWriter.java:225)
at com.googlecode.jsonplugin.JSONWriter.process(JSONWriter.java:161)
at com.googlecode.jsonplugin.JSONWriter.value(JSONWriter.java:127)
at com.googlecode.jsonplugin.JSONWriter.add(JSONWriter.java:323)jsp中调用ajax部分:
     $.ajax({   
         type: "POST",  
         //dataType: "text", 
         async: false,//ajax同步       
         url: "<%=request.getContextPath() %>/violationinfo/findStreetsNewWin.action",      //提交到一般处理程序请求数据   
         data: "pageNum=" + pageIndex + "&pageSize=" + pageSize + "&streetNameNewWin=" + streetNameNewWin,                       
         success: function(json) { 
          json = eval("(" + json + ")"); 
                 var data = json.data; 
         totalRecords = json.pager.totalRecord;
         if(data != "" && totalRecords != 0) {             
             $("#table2 tr:gt(0)").remove();        //移除Id为Result的表格里的行,从第二行开始(这里根据页面布局不同页变)   
             $("#table2").append(data);             //将返回的数据追加到表格   
             }else {
             $("#table2 tr:gt(0)").remove();        //移除Id为Result的表格里的行,从第二行开始(这里根据页面布局不同页变)   
             }
         }  
     });  
请问是什么原因啊?该如何解决呢?非常感谢

解决方案 »

  1.   

    调用action中的方法:
    public String findStreetsNewWin() {
    try {
    pager = new Pager();
    TdPtlStreet street = new TdPtlStreet();
    int count = 0;
    List<TdPtlStreet> streetList = null;
    street.setStreetName(streetNameNewWin);
    if(streetNameNewWin == null || "".equals(streetNameNewWin)) {//表示搜索条件为空,查询所有的客户信息
    streetList = this.streetService.findAllStreets(pageSize, pageNum);
    count = this.streetService.findAllStreetsCount();
    }else {
    streetList = this.streetService.findStreetsByName(street, pageSize, pageNum);
    count = this.streetService.findStreetsByNameCount(street);
    }
    StringBuffer dataBuff = new StringBuffer();
    for(int i=0; i<streetList.size(); i++) {
    //对查询的街道信息拼串
    dataBuff.append("<tr id='tr");
    dataBuff.append(streetList.get(i).getStreetId());
    dataBuff.append("' onClick='javascript:showIdStreet(");
    dataBuff.append(streetList.get(i).getStreetId());
    dataBuff.append(");'>");
    dataBuff.append("<td>");
    dataBuff.append(streetList.get(i).getStreetId());//街道编号
    dataBuff.append("</td>");
    dataBuff.append("<td>");
    dataBuff.append(streetList.get(i).getStreetName());//街道名称
    dataBuff.append("</td>");
    dataBuff.append("</tr>");
    }
    pager.getPager(pageNum, count, pageSize);
    data = dataBuff.toString();
    //清空basicInfo
    basicInfo = null;
    } catch (Exception e) {
    e.printStackTrace();
    return "businessError";
    }
    return SUCCESS;
    }struts.xml配置:
    <action name="findStreetsNewWin" class="violationinfoAction" method="findStreetsNewWin">
    <result type="json">
    </result>
    </action>
      

  2.   

    for(int i=0; i<streetList.size(); i++) { 这里都不判空
      

  3.   

    个人感觉你是findAllStreets这个方法死循环了,导致内存溢出。
      

  4.   

    或者是你设置的堆内存太小,但是你的streetList的长度太大,导致内存溢出