Hi,

I tested the implementation of class ReferenceMap - it works as expected. In class AnonymousPersistentField the persistent object is used as map key, the field value (of the anonymous field) as map value and the ReferenceMap use weak keys and hard values, thus all persistent objects set in class AnonymousPersistentField should be GC (if the persistent object was no longer referenced) - in theory this should work, but it seems this doesn't work for you.

Could you please post the mapping of the involved classes MotdePasse and Utilisateur (and of mapped sub/super-classes of these classes if any exist). Do you modify any source classes of OJB related to anonymous fields or references?

regards,
Armin

Marwane wrote:
Hi,
we have a production application on system Windows Server that using :
WebSphere 6.0
OJB version 1.0.3
the application generate a lot of dump file in the system witch cause a system crash .. in the log i find this : 1,095,332,808 [24] 2 org/apache/ojb/broker/metadata/fieldaccess/AnonymousPersistentField 0x11841c40 1,095,332,784 [72] 2 org/apache/ojb/broker/util/ReferenceMap 0x1664db30 1,095,332,664 [262,160] 23,114 array of org/apache/ojb/broker/util/ReferenceMap$Entry 0x71b48528 38,548,064 [32] 4 org/apache/ojb/broker/util/ReferenceMap$Entry 0x60e5c2f0 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x229d1fd0 38,543,048 [32] 2 org/apache/ojb/broker/util/ReferenceMap$WeakRef 0x229d1ff0 38,543,016 [40] 4 com/convergence/utile/habilitations/MotdePasse 0x229d20b8 38,542,032 [120] 14 com/convergence/utile/habilitations/Utilisateur 0x2056fde0 38,146,872 [64] 6 com/convergence/utile/habilitations/Profil 0x1e806358 390,528 [24] 1 org/apache/ojb/broker/util/collections/ManageableArrayList 0x29d00308 3,032 [24] 1 org/apache/ojb/broker/util/collections/ManageableArrayList 0x254d0d38 880 [128] 9 java/util/GregorianCalendar 0x205702b0 128 [40] 4 com/convergence/utile/organisation/Entite 0x21cca310 88 [32] 1 java/lang/String 0x2056ffa0 80 [24] 1 org/apache/ojb/broker/util/collections/ManageableArrayList 0x2b1e6ee8 80 [24] 1 java/util/ArrayList 0x2056fdc8 64 [32] 1 java/lang/String 0x2056fed8 56 [32] 1 java/lang/String 0x2056ff10 56 [32] 1 java/lang/String 0x2056ff48 48 [32] 1 java/lang/String 0x2056fe98 16 [16] 0 java/lang/Boolean 0x101eccb0 16 [16] 0 java/lang/Boolean 0x101eccc0 880 [128] 9 java/util/GregorianCalendar 0x229d2430 64 [32] 1 java/lang/String 0x229d2120 16 [16] 0 java/lang/Boolean 0x101eccc0 48 [32] 1 java/lang/ref/ReferenceQueue 0x1664db10 24 [24] 0 java/lang/Long 0x229d20e8 1,095,332,784 [72] 2 org/apache/ojb/broker/util/ReferenceMap 0x1664db30 4,904 [32] 2 org/apache/ojb/broker/util/ReferenceMap$WeakRef 0x60e5c310 24 [24] 0 java/lang/Long 0x60e5c360 1,095,332,784 [72] 2 org/apache/ojb/broker/util/ReferenceMap 0x1664db30 38,547,920 [32] 4 org/apache/ojb/broker/util/ReferenceMap$Entry 0x659aea38 38,543,280 [32] 4 org/apache/ojb/broker/util/ReferenceMap$Entry 0x19f95b00 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x65d52218 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x675fd680 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x4a016de8 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x1b3b09c0 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x4384a5e8 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x270b7740 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x1c9d4ed0 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x505d07a0 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x3b8f8f10 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x6916b088 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x3d6fdbd0 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x14a30960 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x5d3cd108 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x13937968 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x1aa7b5f8 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x118db108 38,543,104 [32] 3 org/apache/ojb/broker/util/ReferenceMap$Entry 0x58115890 There are 23,094 more children

so, some object like 'org/apache/ojb/broker/util/ReferenceMap$Entry', 'org/apache/ojb/broker/util/ReferenceMap' , org/apache/ojb/broker/metadata/fieldaccess/AnonymousPersistentField objects are consuming more than 1 GB (1,095,332,664 bytes) on heap.

I need an explanation of this , please. and solution or test to do .

thx in advance.

------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE descriptor-repository PUBLIC "-//Apache Software Foundation//DTD OJB 
Repository//EN"
       "repository.dtd">
<descriptor-repository version="1.0" isolation-level="read-uncommitted" 
proxy-prefetching-limit="50">
<jdbc-connection-descriptor jcd-alias="default" default-connection="true" platform="Db2" jdbc-level="2.0" 
driver="com.p6spy.engine.spy.P6SpyDriver" protocol="jdbc" subprotocol="db2" dbalias="//localhost/DEV" username="db2admin" 
password="db2admin">
                <sequence-manager 
className="org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl">
                        <attribute attribute-name="grabSize" 
attribute-value="5"/>
                        <attribute attribute-name="globalSequenceId" 
attribute-value="true"/>
                        <attribute attribute-name="globalSequenceStart" 
attribute-value="10000"/>
                </sequence-manager>
        </jdbc-connection-descriptor>
        

        <!-- OJB INTERNAL MAPPINGS START HERE, DO NOT EDIT -->
        <!-- ************************************************************* -->
        <!-- The OJB HIGH/LOW SequenceManagerTable -->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.broker.util.sequence.HighLowSequence" 
table="OJB_HL_SEQ">
                <object-cache 
class="org.apache.ojb.broker.cache.ObjectCacheEmptyImpl"/>
                <field-descriptor name="tableName" column="TABLENAME" jdbc-type="VARCHAR" 
primarykey="true"/>
                <field-descriptor name="fieldName" column="FIELDNAME" jdbc-type="VARCHAR" 
primarykey="true"/>
                <field-descriptor name="maxKey" column="MAX_KEY" 
jdbc-type="BIGINT"/>
                <field-descriptor name="grabSize" column="GRAB_SIZE" 
jdbc-type="INTEGER"/>
                <field-descriptor name="version" column="VERSION" jdbc-type="INTEGER" 
locking="true"/>
        </class-descriptor>
        <!-- ************************************************************* -->
        <!-- THIS IS THE OJB NAMED ROOTS TABLE, DO NOT EDIT-->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.odmg.NamedRootsMap$NamedEntry" 
table="OJB_NRM">
                <field-descriptor name="name" column="NAME" jdbc-type="VARCHAR" 
primarykey="true"/>
                <field-descriptor name="oid" column="OID_" 
jdbc-type="LONGVARBINARY"/>
        </class-descriptor>
        <!-- ************************************************************* -->
        <!-- THIS IS THE OJB DLIST IMPLEMENTATION, DO NOT EDIT-->
        <!-- alternative implementation of DList -->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.odmg.collections.DListImpl" 
table="OJB_DLIST">
                <field-descriptor name="id" column="ID" jdbc-type="INTEGER" 
primarykey="true" autoincrement="true"/>
                <collection-descriptor name="elements" 
element-class-ref="org.apache.ojb.odmg.collections.DListEntry" auto-retrieve="true" auto-update="none" 
auto-delete="none">
                        <inverse-foreignkey field-ref="dlistId"/>
                </collection-descriptor>
        </class-descriptor>
        <!-- ************************************************************* -->
        <!-- THIS IS THE OJB DLIST ENTRY IMPLEMENTATION, DO NOT EDIT-->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.odmg.collections.DListEntry" 
table="OJB_DLIST_ENTRIES">
                <field-descriptor name="id" column="ID" jdbc-type="INTEGER" 
primarykey="true" autoincrement="true"/>
                <field-descriptor name="dlistId" column="DLIST_ID" 
jdbc-type="INTEGER"/>
                <field-descriptor name="position" column="POSITION_" 
jdbc-type="INTEGER"/>
                <field-descriptor name="oid" column="OID_" jdbc-type="LONGVARBINARY" 
conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion"/>
        </class-descriptor>
        <!-- ************************************************************* -->
        <!-- THIS IS THE OJB DBAG IMPLEMENTATION, DO NOT EDIT-->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.odmg.collections.DBagImpl" 
table="OJB_DLIST">
                <field-descriptor name="id" column="ID" jdbc-type="INTEGER" 
primarykey="true" autoincrement="true"/>
                <collection-descriptor name="elements" 
element-class-ref="org.apache.ojb.odmg.collections.DListEntry" auto-retrieve="true" auto-update="none" 
auto-delete="none">
                        <inverse-foreignkey field-ref="dlistId"/>
                </collection-descriptor>
        </class-descriptor>
        <!-- ************************************************************* -->
        <!-- THIS IS THE OJB DSET IMPLEMENTATION, DO NOT EDIT-->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.odmg.collections.DSetImpl" 
table="OJB_DSET">
                <field-descriptor name="id" column="ID" jdbc-type="INTEGER" 
primarykey="true" autoincrement="true"/>
                <collection-descriptor name="elements" 
element-class-ref="org.apache.ojb.odmg.collections.DSetEntry" auto-retrieve="true" auto-update="none" 
auto-delete="none">
                        <inverse-foreignkey field-ref="dlistId"/>
                </collection-descriptor>
        </class-descriptor>
        <!-- ************************************************************* -->
        <!-- THIS IS THE OJB DSET ENTRY IMPLEMENTATION, DO NOT EDIT-->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.odmg.collections.DSetEntry" 
table="OJB_DSET_ENTRIES">
                <field-descriptor name="id" column="ID" jdbc-type="INTEGER" 
primarykey="true" autoincrement="true"/>
                <field-descriptor name="dlistId" column="DLIST_ID" 
jdbc-type="INTEGER"/>
                <field-descriptor name="position" column="POSITION_" 
jdbc-type="INTEGER"/>
                <field-descriptor name="oid" column="OID_" jdbc-type="LONGVARBINARY" 
conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion"/>
        </class-descriptor>
        <!-- ************************************************************* -->
        <!-- THIS IS THE OJB DMAP IMPLEMENTATION, DO NOT EDIT-->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.odmg.collections.DMapImpl" 
table="OJB_DMAP">
                <field-descriptor name="id" column="ID" jdbc-type="INTEGER" 
primarykey="true" autoincrement="true"/>
                <collection-descriptor name="entries" element-class-ref="org.apache.ojb.odmg.collections.DMapEntry" 
collection-class="org.apache.ojb.broker.util.collections.ManageableHashSet" auto-retrieve="true" auto-update="none" 
auto-delete="none">
                        <inverse-foreignkey field-ref="dmapId"/>
                </collection-descriptor>
        </class-descriptor>
        <!-- ************************************************************* -->
        <!-- THIS IS THE OJB DMAP ENTRY IMPLEMENTATION, DO NOT EDIT-->
        <!-- ************************************************************* -->
        <class-descriptor class="org.apache.ojb.odmg.collections.DMapEntry" 
table="OJB_DMAP_ENTRIES">
                <field-descriptor name="id" column="ID" jdbc-type="INTEGER" 
primarykey="true" autoincrement="true"/>
                <field-descriptor name="dmapId" column="DMAP_ID" 
jdbc-type="INTEGER"/>
                <field-descriptor name="keyOid" column="KEY_OID" jdbc-type="LONGVARBINARY" 
conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion"/>
                <field-descriptor name="valueOid" column="VALUE_OID" 
jdbc-type="LONGVARBINARY" 
conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion"/>
        </class-descriptor>
        <!-- END OF OJB INTERNAL MAPPINGS-->
</descriptor-repository>


------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to