Algebraic.dispose
allows the expression represented by an Algebraic to be collected by the Maple garbage collector
Calling Sequence
Description
Examples
void dispose() throws MapleException
The dispose functions allows a Maple expression that is represented by an Algebraic object to be collected by the Maple garbage collector. Once dispose has been called on an Algebraic, it is an error to call any member function other than isDisposed.
Every Algebraic object represents a Maple expression. The Algebraic objects keep the corresponding Maple expression from getting collected by the Maple garbage collector. When the Java garbage collector collects the Algebraic object, the link between it and the Maple expression is broken, and Maple may collect the expression.
In some situations the Java garbage collector may be too slow in collecting the Algebraic objects. When this happens, Maple is unable to reuse the memory and so it must allocate more. Calling dispose on objects that are no longer needed may fix this problem.
import com.maplesoft.openmaple.*;
import com.maplesoft.externalcall.MapleException;
class Example
{
public static void main( String notused[] ) throws MapleException
String[] mapleArgs = { "java" };
Engine engine = new Engine( mapleArgs, new EngineCallBacksDefault(), null, null );
Algebraic a1;
int i;
for ( i = 0; i < 100000; i++ )
a1 = engine.evaluate( "Array( 1..10^4 ):" );
a1.dispose();
}
Numeric n = (Numeric)engine.evaluate( "kernelopts( bytesalloc ):" );
System.out.println( "Total Bytes Alloc: "+n );
Executing this code should produce output similar to the following, with the bytes used messages removed.
Total Bytes Alloc: 6945544
See Also
ExternalCalling/Java/MapleException
OpenMaple
OpenMaple/Java/Algebraic
OpenMaple/Java/Algebraic/isDisposed
OpenMaple/Java/API
OpenMaple/Java/Engine/evaluate
OpenMaple/Java/memory
Download Help Document