我通過我查詢使用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