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:
Meine TOP 5 der Speicherfresser bei 4 HeapDumps (erzeugt via Java Option):
Der
gehört zur immer zur darüberstehenden
und beinhaltet massig NULL-Werte und sonst nur
.
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!
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):
- org.apache.catalina.loader.WebappClassLoader#
- class org.hibernate.impl.SessionFactoryObjectFactory
- org.hibernate.util.FastHashMap#
- java.util.HashMap#
- java.util.HashMap$Entry[]#
Der
Code:
HashMap$Entry
Code:
HashMap
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!