OOM - SessionFactoryObjectFactory

brauner1990

Bekanntes Mitglied
Mahlzeit Com!

ich habe eine WebApp geschrieben, welche via JPA alle Objekte in die dazugehörrigen Tabellen lädt / rausholt.

Mein Problem liegt bei folgender Sache:

Ich bekomme immer eine OOM Exception von Heap ....

Mithilfe von lambdaprobe, jconsole und visualvm habe ich mir das ganze nun bei Last angeguckt.
Hier ein Paar Daten:
  • OS: Windows XP (5.1) Service Pack 3
  • Architecture: x86 32bit
  • Java Home: C:\Program Files\Java\jre6
  • JVM: Java HotSpot(TM) Client VM (17.1-b03, mixed mode, sharing)
  • Apache Tomcat 6.0.33 Server
    • Maximum memory pool: 128MB
    • Java Optionen
      • Dcom.sun.management.jmxremote
      • Dcom.sun.management.jmxremote.port=8088
      • Dcom.sun.management.jmxremote.authenticate=false
      • Dcom.sun.management.jmxremote.ssl=false
      • XX:+HeapDumpOnOutOfMemoryError
    • restliches Standart

Meine TOP 5 der Speicherfresser bei 4 HeapDumps (erzeugt via Java Option):
  1. org.apache.catalina.loader.WebappClassLoader#
  2. class org.hibernate.impl.SessionFactoryObjectFactory
  3. org.hibernate.util.FastHashMap#
  4. java.util.HashMap#
  5. java.util.HashMap$Entry[]#
Diese 5 sind in allen Dumps gleich.
Der
Code:
HashMap$Entry
gehört zur immer zur darüberstehenden
Code:
HashMap
und beinhaltet massig NULL-Werte und sonst nur
Code:
SessionFactoryImpl
.

Habt ihr dort vlt Ideen wie das aussieht?

Meine PersistenceUnit sieht wie folt aus:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="PU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>j<!-- 6 verschiedene Classes --></class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.username" value="user"/>
<property name="hibernate.connection.driver_class" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="hibernate.connection.password" value="pw"/>
<property name="hibernate.connection.url" value="jdbc:sqlserver://ip\instance;databaseName=db"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<!-- configuration pool via c3p0-->
<property name="c3p0.acquire_increment" value="1"/>
<property name="c3p0.idle_test_period" value="100"/><!-- seconds -->
<property name="c3p0.max_size" value="100"/>
<property name="c3p0.max_statements" value="0"/>
<property name="c3p0.min_size" value="10"/>
<property name="c3p0.timeout" value="100"/> <!-- seconds -->

<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JDBCTransactionFactory"/>
</properties>
</persistence-unit>
</persistence>
[/XML]


Ich hoffe ihr könnt mir helfen! Danke!
 
G

Gelöschtes Mitglied 5909

Gast
wie viele einträge hat die tabelle? wie groß sind die dazugehörigen daten?
wie viel speicher hast du dem server gegeben?
 

brauner1990

Bekanntes Mitglied
G

Gelöschtes Mitglied 5909

Gast
hast du das caching mal ausgeschaltet,

oder den hier

[xml]<property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>[/xml]

mit ehcache ersetzt?
 

Neue Themen


Oben