我在webapplication中面对大数据的java.lang.OutOfMemoryError

时间:2014-09-04 06:50:03

标签: java exception java.lang.class

我有超过20个类别,其中每个类别在webapplication中包含超过400个子类别。

当我按下类别按钮时,它会抛出java.lang.OutOfMemoryError。这是java文件代码。在这段代码中,我将子类数据放入json对象,然后将其添加到json数组。

String responceObjectStr;
JSONObject responseObject;
for(int i=0;i<category.length;i++){
    responseObject = new JSONObject();
    JSONArray ja = new JSONArray();
    responseObject.put(category[i],Categorywisedata);//adding data to response
    ja.put(responseObject);//putting response object to JSONArray
    responceObjectStr = new String(ja.toString().getBytes("UTF-8"));
    out.print(responceObjectStr);//response
    responceObjectStr = null;
    responseObject = null;
} 

在每个类别中,它可能有400多个子类别。 当我按下类别按钮时,它会显示java.lang.OutOfMemoryError

如何解决这个问题。我不想为此增加JVM内存。我希望Java代码解决方案能够解决这个问题。

1 个答案:

答案 0 :(得分:1)

此代码中的out是什么?
它是一个Web应用程序,你是通过http发布的吗? 您可能能够刷新输出流。如果容器支持流式传输内容,则它不会在潜在的缓冲区中累积,从而导致内存不足错误。

什么行导致内存不足异常?

另一种方法是只回复类别并忽略子类别。如果客户端需要一个类别的子类别,它可以请求该数据。如果它需要所有子类别的子类别,它将不得不多次请求它 是的,这会慢一点,但速度和记忆往往是相互交换的。