I am working remotely via VPN. The project is well underway and I have run into an issue not seen before. When I run a client locally, I am getting crashes as the project grows. The project settings are 1024/4096 for the client memory, and I am using the bundled Java.
Looking at the gateway’s client status, it shows all the running clients (Image1). But if I click on Details for my running client, it shows I have a max of 256mb… Huh? (Image2)
Clicking all the other clients show they have the full 4096mb available (Image3).
Why would my local client only be allocated 256mb when it is on the same project from the same gateway? Now I know why my clients are crashing. My PC is a high end rig with 64gb ram, so I’m sure I can spare it.
Downloaded a new Client Launcher for Windows from the Gateway and installed. I was hoping that was a nice trick that would fix it… however, it is still reporting 256mb. Vewy stwange.
Did you actually delete the shortcut for the app and create a new one? The command line in the shortcut can include the memory allocation, overriding the project setting.
Look at the launcher’s local log file to see what memory allocation option was included when it started the client java process itself. Also look in the launcher’s local configuration file.
Finally, consider looking in the client’s own memory diagnostics, instead of relying on the gateway’s view of the client.
Here is the pertinent info from the log: Djavaws.sr.platform.edition= -Xms256M -Xmx4096M.
Looks like it is initiating at 256mb. Also, the client diagnostics shows that it never gets above about 240mb until it crashes when I try to load the heavy screen. The error in the logs is OutOfMemoryError: Java Heap Memory.
I just edited the launch.xml to include the following:
I went thru Inductive’s support for this. Turns out…it’s a known bug.
Steve,
So I was just showing this to some of our developers and it turns out there is actually an open bug ticket for this issue that is still in progress. Apparently this bug comes up only when you go through these steps: Launch the Native Client Launcher (NCL) and then launch the designer from the NCL, then once you’re in the designer you launch the vision client in published or staging mode. Normally the designer is supposed to ‘pass’ it’s max memory setting onto a vision client, if it’s launched from the designer. And with the NCL it is supposed to download these settings from the Gateway when it goes to launch the designer, but that is where this bug lies, the NCL is not correctly downloading this setting from the Gateway so it defaults the designer to 256 MB in the code. And I was able to recreate this bug on my 7.9.16 Gateway as well.
So for the time being your best bet is going to be to launch the dseigner.jnlp file without the NCL, and then launch the client from there and it should have the same max memory as the designer. So if you set the designer max memory to 4 GB your client should have 4 GB if it’s launched from there. Or you could launch the client .jnlp files directly and they will use the correct max memory specified from your project properties settings. I’ve clicked ‘follow’ on the internal bug ticket so I’ll get emails with updates on it, and I’ll let you know when I have some more information on the progress of this issue. Let me know if you have any questions on this.
Seems to me this is a pretty serious issue that should not have spanned 4 releases of the 7.9 platform (7.9.12 to 7.9.16). I mean, the embedded NCL is what everyone uses, right?