2016-12-06 2 views
0

Ich habe eine Stock und StockRecords Klassen mit einer zu vielen Beziehung.Hibernate und Java-Heap-Platz Fehler

In Stock.hbm.xml, ich habe eine Sammlung wie diese definiert

<bag name="stockRecords" table="stockRecords" inverse="true" lazy="true" 
    fetch="select"> 
<key> 
    <column name="stock_Records" not-null="true" /> 
</key> 
    <one-to-many class="com.my.model.objects.StockRecords" /> 
</bag> 

ich auf einmal ein Lager am accesing. hier ist das Problem

Stockrecords hat eine abgelegt (String), die 500000 Zeichen in es auf einem durchschnittlichen

In StockRecords.hbm.xml

<property name="summary" type="string" lazy="true" > 
     <column name="summary" /> 
    </property> 

Während ich eine bin accesing der enthält Aktien-Entity basierend auf ID, ich versuche, eine Zeichenfolge aller Übersichtsfelder aus allen Bestandsdatensätzen des Bestands zu erstellen. Ich bekomme Java Heap Space Fehler sie ich habe meine jvm Einstellung auf 512m eingestellt. ist das Winterschlaf oder Java-Ding?

4.xx Java 1.7

+0

Möglicherweise müssen Sie 512 m bis 1024 m ändern. Das könnte helfen. –

Antwort

1

Stellen Sie sicher, dass die Entitäten aus dem Hibernate Zusammenhang mit session.evict(obj), sobald Sie es nicht mehr brauchen winter spülen. Andernfalls werden all diese Entitäten Ihr Gedächtnis ziemlich schnell füllen.

Sie können auch den gesamten Kontext mit session.clear() löschen, wenn aggressiv ist kein Problem für Ihren Algorithmus.

Wenn dies nicht ausreicht, sollten Sie die Java-Heap-Größe erhöhen.