Three short answers, because I don't know whether you're talking about the QlikView services, QlikView desktop or both on the same server:
- QVS will never release the memory it used before (at least not all of it). The big chunk it keeps for itself may be empty however, because QVS has its own memory manager. This is simply a safety measure to avoid memory starvation whenever possible.
- QV Desktop will release most of its allocated memory when you close the opened document(s), reduce the data in these documents or simply close the application. All memory is released.
- QVB (the Reload engine used by the QlikView Distribution Service) will behave just like QV Desktop. Unfortunately this means its memory allocation cannot be controlled by the QMC settings or by the QVS memory manager. This is the snake in the grass...
BTW: restarting QVS may release all allocated memory for documents displayed in the AP, but that's only a temporary measure.
Peter is correct.
I would suggest you to make a task which is going to restart the QV services 1-2 times per day. You can track when is the best time for this by looking for the usual behavior of the users. Also, you should check that you don't have a lot of reloads eating RAM in the same time.
I have a task which restarts the QV services at 8 am and 1 pm, and it does the job.
Thank you Peter for your reply. Currently we have both Qlikview services and Qlikview Desktop running on the same machine and developers RDP onto that machine (Dev servera). We have been having memory issues, since developers are working on huge dashboards and due to this the performance is low and sometimes the RDP session is also terminated.
The QlikView server is not built to play along nicely with others as its designed to be run on a machine with dedicated resources that are not attended to be shared with other services. The general recommendation is that you try to keep the environments (server and developer) separated to avoid this kind of behavior.
As im fully aware that its not always possible would I recommend that you take a look at how the working set limits are set in the QVS, and if tweeking them (and by that, the internal sets for the memory management) help you. To restart the QVS service will most likely help you but will also mean that you flashes the servers cache - something that will affect the end uses experience.
The restarting services-workaround suggested by Ashfaq is something you probably will need to do (if you're talking about releasing memory from QV Server). I've even seen/read/heard suggestions by experts telling that as a good practice you may restart QV Server (specially QVS Service), because QlikView eventually accumulates memory even if you close all apps/sessions.
I don't know if this is a QV bug, a windows bug, or just some unexpected behaviour, but in my experience I can't tell you that even if you follow all good practices you will still need to recurr to this workaround,