A few months ago, I had to work on a Windows Server to setup an IDS Target. The installation and configuration of the target wasn’t that different compared to a Linux host, so it wasn’t difficult at all (if you ignore some strange behavior like described here for example). But there was one point for which I was a little bit skeptical: how do you configure the IDS Target Memory/RAM assignment for its JVM? On Linux, it’s very easy since the IDS Target configuration will create some start/stop scripts and in these, you can easily find the Java commands executed. Therefore, changing the JVM Memory is just adding the usual Xms/Xmx parameters needed there…
Unfortunately, on Windows, IDS will setup a service automatically and this service uses a .exe file, which you, therefore, cannot modify in any way. OpenText (or rather EMC before) could have used a cmd or ps1 script to call the Java command, similarly to Linux or even used a java.ini file somewhere but that’s not the case.
By default, the JVM will probably use something like 256Mb of RAM. The exact value will depend on the Java version and potentially on your server as well (how much RAM the host has). There are a lot of blogs or posts already on how to check how much memory is used by the JVM by default but for the quick reference, you can check that with something like:
# Linux: java -XX:+PrintFlagsFinal -version | grep HeapSize # Windows: java -XX:+PrintFlagsFinal -version | findstr HeapSize
Having 256Mb of RAM for the IDS Target might be sufficient if the number of files to transfer is rather “small”. However, at some point, you might end-up facing an OutOfMemory error, most probably whenever the IDS Target tries to open the properties.xml file from the previous full-sync or directly during the initial full-sync. If the file is too big (bigger than the Memory of the JVM), it will probably end-up with the OOM and your synchronization will fail.
Therefore, how do you increase the default IDS Target JVM settings on Windows? It’s actually not that complicated but you will need to update the registry directly:
- Open regedit on the target Windows Server
- Navigate to (that’s an example with secure IDS on port 2787, your path might be different):
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OpenText Documentum IDS Target_secure_2787\Env
- Double click on the registry key inside this folder named “Values“
- Update the “jvmoptions” definition (around the end normally) to add the Xms and Xmx parameters like:
- from: “jvmoptions=-Dfile.encoding=UTF-8
- to: “jvmoptions=-Dfile.encoding=UTF-8 -Xms2g -Xmx4g“
- Restart the IDS Target Service
With that, the IDS Target should now be allowed to use up to 4GB of RAM, hopefully, which should give you some space to have proper synchronization without OutOfMemory.