Hallo,
ich hoffe, mir kann jemand beim einem Speicherproblem mit jacob (JavaCOMBridge) helfen.
In beiden folgenden Faellen laeuft meine Anwendung irgendwann „OutOfMemory“.
Vielleicht muss jacob auf bestimmte Weise initialisiert werden?
-----------------------
while( true )
{
ActiveXComponent _systemControllerProxy = new ActiveXComponent( “String representation of the COM object” );
_systemControllerProxy.invoke( “a method of the COM object” );
_systemControllerProxy.safeRelease();
}
-----------------------
Das safeRelease() scheint hierbei nicht auszureichen, den reservierten Speicher wieder frei zu geben.
Eigentlich moechte ich den Code so ausfuehren, aber hier ist der Speicherverbrauch noch dramatischer (es scheint bei jedem invoke() neue Objekte angelegt zu werden, obwohl nur mit ein und denselben gearbeitet werden soll:
-----------------------
ActiveXComponent _systemControllerProxy = new ActiveXComponent( “String representation of the COM object” );
while( true )
{
_systemControllerProxy.invoke( “a method of the COM object” );
}
_systemControllerProxy.safeRelease();
ComThread.Release();
-----------------------
Bin fuer jede Hilfe dankbar.
Viele Gruesse,
Andreas
Das folgende Code-Schnipsel nur mit einem Variant-Objekt laeuft in einer Endlos-Schleife z.B. nur dann nicht OutOfMemory, wenn die ComThread.Release()-Methode aufgerufen wird:
public static void variantMemLeakTest()
{
System.out.println("variantMemLeakTest(): starting ...");
Variant l_variant = new Variant();
l_variant.safeRelease();
//ComThread.Release();
System.out.println("variantMemLeakTest(): finished.");
}
ich hoffe, mir kann jemand beim einem Speicherproblem mit jacob (JavaCOMBridge) helfen.
In beiden folgenden Faellen laeuft meine Anwendung irgendwann „OutOfMemory“.
Vielleicht muss jacob auf bestimmte Weise initialisiert werden?
-----------------------
while( true )
{
ActiveXComponent _systemControllerProxy = new ActiveXComponent( “String representation of the COM object” );
_systemControllerProxy.invoke( “a method of the COM object” );
_systemControllerProxy.safeRelease();
}
-----------------------
Das safeRelease() scheint hierbei nicht auszureichen, den reservierten Speicher wieder frei zu geben.
Eigentlich moechte ich den Code so ausfuehren, aber hier ist der Speicherverbrauch noch dramatischer (es scheint bei jedem invoke() neue Objekte angelegt zu werden, obwohl nur mit ein und denselben gearbeitet werden soll:
-----------------------
ActiveXComponent _systemControllerProxy = new ActiveXComponent( “String representation of the COM object” );
while( true )
{
_systemControllerProxy.invoke( “a method of the COM object” );
}
_systemControllerProxy.safeRelease();
ComThread.Release();
-----------------------
Bin fuer jede Hilfe dankbar.
Viele Gruesse,
Andreas
Das folgende Code-Schnipsel nur mit einem Variant-Objekt laeuft in einer Endlos-Schleife z.B. nur dann nicht OutOfMemory, wenn die ComThread.Release()-Methode aufgerufen wird:
public static void variantMemLeakTest()
{
System.out.println("variantMemLeakTest(): starting ...");
Variant l_variant = new Variant();
l_variant.safeRelease();
//ComThread.Release();
System.out.println("variantMemLeakTest(): finished.");
}