JSONデータを返すWebサービスをJavaで作成しました。小さなデータには問題ありませんが、大きなデータを扱うとメモリ不足エラーが返されます。
私のコードを見てください:
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 ヒープ領域) は、jsonArray に画像を追加した瞬間に発生します:
byte[] iBytes = r.getBytes("image");
String iBase64 = DatatypeConverter.printBase64Binary(iBytes);
obj.put("image", iBase64);
問題を解決する方法はありますか?