我正在尝试从 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
. 但我不完全确定出了什么问题。