我通过我查询使用Hibernate的一个表的表时,你得到错误内存不足错误在Hibernate查询大数据
"Exception in thread
"Thread-4" java.lang.OutOfMemoryError: Java heap space at
java.util.Arrays.copyOf(Arrays.java:3222) at
java.util.Arrays.copyOf(Arrays.java:3222)".
这里是我的示例代码。
public List<MyBean> loadData() {
Session s=CFactory.getSession();
s.beginTransaction();
List<MyBean> mybean=null;
try {
Query sry=s.createQuery("from MyBean where flag='NP'");
mybean=sry.list();
s.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}
return mybean;
}
我的问题是如何能在具有庞大的数据表查询并将其转换为一个列表,而在休眠越来越内存不足的错误?
Exception in thread "Thread-4" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3222)
at java.util.Arrays.copyOf(Arrays.java:3222)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
at org.hibernate.type.descriptor.java.DataHelper.extractBytes(DataHelper.java:170)
at org.hibernate.type.descriptor.java.DataHelper.extractBytes(DataHelper.java:170)
at org.hibernate.type.descriptor.java.PrimitiveByteArrayTypeDescriptor.wrap(PrimitiveByteArrayTypeDescriptor.java:124)
at org.hibernate.type.descriptor.java.PrimitiveByteArrayTypeDescriptor.wrap(PrimitiveByteArrayTypeDesciptor.java:41)
at org.hibernate.type.descriptor.sql.BlobTypeDescriptor$5.doExtract(BlobTypeDescriptor.java:115)
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:254)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:250)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:230)
at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:331)
首先你为什么要使用事务,而你只从数据库中读取记录???也可以发布完整的堆栈跟踪? – 2014-11-24 06:47:16
增加你的堆内存。 -Xms和-Xmx是你需要的! – hemanth 2014-11-24 06:49:17
@hemanth这可能与休眠记录功能有关。所以你不能确定这一点。检查这个http://stackoverflow.com/questions/8487221/hibernate-java-lang-outofmemoryerror-java-heap-space – 2014-11-24 06:51:07