If you're looking for some tips on using DIIOP with Domino, check out the
DominoDIIOP page! Other stuff to appear here as and when.
Development gotchas & tips
Remember your recycling! Don't bother recycling AgentContext? or Session - see Julian's site for more on that When using ViewEntry? objects, remember to recycle the underlying Document object (even if you don't actually use / instantiate them. Bizarre I know) Use java.lang.Runtime methods to test for leaks, e.g.:Runtime.getRuntime().freeMemory();
Runtime.getRuntime().totalMemory();
Runtime.getRuntime().maxMemory();Some useful blog posts
A 'stub' agent with ensuing discussion (recycle() etc.):
Some useful Domino Java code?Debugging agent threads / memory: Are your threads leaking?
notes.ini variables
JavaStackSize=XXX
Size of each Java thread's execution stack in bytes
JavaUserClasses=XXX
Where XXX = a list of class locations, jar file locations, etc. Separate with commas on Windoze, with a colon on UNIX platforms. This allows code-sharing across agents and applets, and can conceivably lead to performance boosts (see related page in this wiki)
JavaVerbose=1
Enables(1) or disables(0) verbose logging from the JVM
JavaVerboseGC=1
Enables(1) or disables(0) verbose logging from the JVM with regards memory usage
JavaEnableJIT=1
Enables default Java JIT compiler; 1 = normal loading of default JIT, 0=disables it altogether.
JavaJITName=1
Enables a SPECIFIED JIT. Use this to load a JIT other than the default
JavaMaxHeapSize=XXX
JavaMinHeapSize=XXX
Where XXX = number of bytes. These settings specify the maximum / minimum sizes the Java heap can reach. You can use units if you don't want to figure out the number of bytes in a MB ;o) e.g. "64 MB" is the same as "67108864"
JavaNoAsyncGC=x
Prevents (1) or allows (0) the JVM from running garbage collection in a separate background thread
JavaNoClassGC=1
Prevents garbage collection on classes, therefore protecting static fields