I have an ACE application where I query for PI tags using Server.GetPIPoints method. This gives me back a pointlist object. I am dealing with a very large number of PI tags here (around 130K).
The memory usage jumps quite high and this is a potential issue for us.
I have read other posts suggesting the use of ISlimFast interface to free the memory.
I have implemented it as the code at the end shows. This helps it a bit but not too much. It reduces the memory footprint by roughly a third but I feel that it should come down much more as the application itself does not do much more that loop through the points and look at the tag names only.
Coming to my question, i can see an article on TechSupport which states "release references to PIPoint objects through PointList collections and direct references.". In my case I am freeing the PointList object by setting it to nothing. Is there any additional things I need to do to the individual PiPoints referenced by this PointList object?
Secondly, I am not sure on the argument being passed into ISlimFast as this is undocumented. Could someone please provide some guidance on the values we can pass into this?
Tech Support Article Link: http://techsupport.osisoft.com/Techsupport/NonTemplates/Known%20Issues/issues.aspx?issuetype=Known%20Issues&id=77DE3C7B604B4077AB457364FE6BE9A8
islimFast = DirectCast(pointsList, PISDKCommon.ISlimFast) pointsList = NothingIf islimFast IsNot Nothing Then Messaging.LogMessage("Freeing Memory...", Me.MessagingFuncs, True, True) islimFast.SlimFast(0) islimFast = NothingEnd If