我试图循环从mysql数据库中读取序列化的对象,并在java中对其执行一些操作。
我编写了以下函数,用于从ResultSet对象返回对象。
public static MyObj deSerializeCacheTagInfo(ResultSet res
) throws SQLException, IOException, ClassNotFoundException
{
byte[] buf = res.getBytes(3);
ObjectInputStream objectIn = null;
if (buf != null)
objectIn = new ObjectInputStream(new ByteArrayInputStream(buf));
MyObj info = (MyObj)objectIn.readObject();
return info;
}
当我运行此代码时,它给了我内存不足的异常。
我进行了一些搜索,发现可能是因为结果集很大并且保存在内存中,所以我尝试一次获取约50行。
但这似乎也无济于事。
在使用visualvm进行性能分析时,它报告
byte[] objects
占用了所有空间。但是我不确定是怎么回事。
最佳答案
尝试在返回前添加objectIn.close();
,可能会有所帮助