DominoJava

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