我在java中創建了一個web服務來返回json數據。好的,對於小數據沒有問題,但是當我處理大數據時,它會返回內存不足錯誤。當我在json數組中創建一個json對象時內存不足
見我的代碼:
public void getImages() throws Exception {
JSONObject o = new JSONObject();
JSONArray jsonArray = new JSONArray();
try {
Class.forName(DRIVERNAME);
conn = DriverManager.getConnection(URL, USER, PASS);
Statement s = connection.createStatement();
ResultSet r = s.executeQuery("select * from images");
while (r.next()) {
JSONObject obj = new JSONObject();
obj.put("id", r.getInt("id"));
byte[] iBytes = r.getBytes("image");
String iBase64 = DatatypeConverter.printBase64Binary(iBytes);
obj.put("image", iBase64);
jsonArray.put(obj);
}
o.put("images", jsonArray);
} catch (SQLException e) {
}
}
的內存不足(java.lang.OutOfMemoryError:Java堆空間)happenning此刻在jsonArray添加圖像:
byte[] iBytes = r.getBytes("image");
String iBase64 = DatatypeConverter.printBase64Binary(iBytes);
obj.put("image", iBase64);
任何想法如何解決問題?
要麼不這樣做,要麼增加可用內存量。 – 2013-02-25 15:22:12
您通常在一次通話中檢索多少張圖像,並且它們有多大?您當前的代碼非常耗費內存,如果您遇到OOM問題,則需要增加程序可用的內存量,或者改進邏輯以減少嘗試發送回客戶端的數據量。 – Perception 2013-02-25 15:22:51
您確定要通過json傳輸圖像字節數據嗎?也許你可以設置圖像大小的限制或調整它們的大小,如果你真的想這樣做。 – 2013-02-25 15:25:00