我有超过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代码解决方案能够解决这个问题。
答案 0 :(得分:1)
此代码中的out
是什么?
它是一个Web应用程序,你是通过http发布的吗?
您可能能够刷新输出流。如果容器支持流式传输内容,则它不会在潜在的缓冲区中累积,从而导致内存不足错误。
什么行导致内存不足异常?
另一种方法是只回复类别并忽略子类别。如果客户端需要一个类别的子类别,它可以请求该数据。如果它需要所有子类别的子类别,它将不得不多次请求它 是的,这会慢一点,但速度和记忆往往是相互交换的。