Environment
NetIQ Identity Manager 4.5
Novell Identity Manager 3.6.1aNovell Identity Manager 4.0.2
Situation
Trying to find a standard way to get the current IDM JVM heap sizes on Linux and/or *nix. This information will be useful for those who want to check or profile their Java heap sizes. On NetWare, you can get this information from Novell Remote Manager (NRM) --> Manage Application --> Java Application Information --> Details.
Also, are there recommended JVM Options for IDM *nix users?
Resolution
The current heap size, current heap free, and maximum heap size are all available by using the utility DXCMD. This ability was added in IDM 4.5. For details look in the documentation "NetIQ Identity Manager Driver Administration Guide" then look under the section "Using the DirXML Command Line Utility" From there look at the section on Command Line Mode for syntax on putting the command in manually in a rule, or use the Interactive Mode section of the docs on how to display the Java statistics.
Normally the default heap sizes are fine for most deployments and there is no reason to recommend anything different. However, with some of the new Jobs and startup policies, you may need to increase the max heap settings to at least 2 gig.
Additionally, watching the heap sizes isn't necessarily the best way to determine optimal heap size because in a garbage collection (GC) system, heap sizes often grow as big as you let them with the net runtime effect of a larger heap size being that GC happens less frequently but takes longer when it does happen. OutOfMemoryError's are the surest indicator of an insufficient maximum heap size. If you get into a situation where GC is happening frequently and very little memory is being released each time, that might be an indicator that a larger heap is might be beneficial.
Additional Information
For IDM 4.0.2 the default sizes for Java are as follows:
Initial Heap Size = 128 meg
Max Heap Size = 512 meg
Change Log
2012-07-10 AB - Fixed typos, removed bad recommendations (changing 'ndsd' script directly), added information on properly setting environment variables for all platforms while removing platform-specific ways. Improved GC file name to be less redundant and more descriptive. Added proper formatting for commands/paths.